我们在Android系统开发的时候经常遇到界面点击没作用,或点击有飘逸的情况,这个时候我们需要通过查看TP是否有上报数据以及Framework层input事件日志进一步的分析,是否是TP在上报数据异常导致还是上层APP本身引起的问题,具体如下:

1、  如何用getevent查看TouchPanel上报数据? 
[SOLUTION] 
步骤如下: 
1)先使用adb shell连接手机。 
2)在命令行输入命令" cat /proc/bus/input/devices",查看"Name="mtk-tpd"“项中的”Handlers=“对应哪个event? 
3)在命令行输入命令" getevent /dev/input/event?”

如下所示: 
cat /proc/bus/input/devices 
输出: 
I: Bus=0000 Vendor=0000 Product=0000 Version=0000 
N: Name="mtk-tpd" 
P: Phys= 
S: Sysfs=/devices/virtual/input/input3 
U: Uniq= 
H: Handlers=mouse0 event3 -----即鼠标对应的event为event3 
B: PROP=2 
B: EV=b 
B: KEY=400 0 0 0 0 1000 40000800 0 0 0 0 
B: ABS=2630000 1000003 
然后输入命令: 
getevent /dev/input/event3

2、如何抓取framework层input事件相关的日志

出现事件输入相关的问题时, 首先通过第一章节来检测对应的设备是否有响应输入,如果没有响应输入,则可能是 driver 或者输入设备模组问题,如果有输入设备响应输入, 则需要打开以下 log 开关,抓取mtklog 检查 framework 层的对事件的处理 ,方法如下:

注意:
 USER版本只能使用静态方式(修改代码)打开debug开关 
 ENG版本可以使用动态方式(命令)打开debug开关

1、App 层 (client) 适用于JB,KK,L,M版本: 
1.1)动态开启APP层LOG方法如下:
adb shell setprop debug.viewroot.enable 7000 
adb shell setprop debug.view.keylog true 
adb shell setprop debug.view.touchlog true 
adb shell setprop debug.view.motionlog true 
adb shell stop 
adb shell start

需等待机器软件重启后才能生效

1.2)静态修改请直接修改DEBUG的值:
开启ViewRootImpl/View/ViewGroup中input event的处理过程的log开关: 
frameworks/base/core/java/android/view/viewrootimpl.java 中的 DEBUG_INPUT 开关(设置为 true); 
frameworks/base/core/java/android/view/viewgroup.java 中的 DBG_MOTION ,DBG_TOUCH开关 (设置为 true);
frameworks/base/core/java/android/view/view.java 中的 DBG_MOTION ,DBG_TOUCH开关 (设置为 true);
frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindow.java 中的 DBG_MOTION 开关 (设置为 true);
frameworks/base/core/java/android/view/KeyEvent.java 中的 DEBUG 开关 (设置为 true);

2、framework(server): 
2.1 动态打开方法 (适用于KK,L,M. 其中KK只适用于eng build, L,M适用于eng build 和user build):
adb shell setprop sys.inputlog.enabled true 
adb shell dumpsys input 
不用重启手机就可以生效,重启手机后会失效。

2.2 静态开启方法: 
frameworks/base/services/input/inputReader.cpp (for ICS & JBx ,KK版本) 
frameworks/native/services/inputFlinger/inputReader.cpp (for L ,M版本) 
找到以下宏定义, 并将其值改为如下 
#define DEBUG_RAW_EVENTS 1 
#define DEBUG_HACKS 1 
#define DEBUG_VIRTUAL_KEYS 1 
#define DEBUG_POINTERS 1 
#define DEBUG_POINTER_ASSIGNMENT 1 
#define DEBUG_GESTURES 1 
#define DEBUG_VIBRATOR 1

frameworks/base/services/input/inputDispatcher.cpp (for ICS & JBx ,KK版本) 
frameworks/native/services/inputFlinger/inputDispatcher.cpp (for L, M 版本) 
找到以下宏或变量定义, 并将其值改为如下 
#else // 改 else 分支中的定义 
#define DEBUG_INBOUND_EVENT_DETAILS 1 
#define DEBUG_OUTBOUND_EVENT_DETAILS 1 
#define DEBUG_DISPATCH_CYCLE 1 
#define DEBUG_REGISTRATION 1 
#define DEBUG_INJECTION 1 
#define DEBUG_FOCUS 1 
#define DEBUG_APP_SWITCH 1 
#define DEBUG_HOVER 1 
#endif 
bool gInputLogEnabled = true;

frameworks/base/libs/androidfw/inputTransport.cpp (for ICS & JBx 版本) 
找到以下宏或变量定义, 并将其值改为如下 
#else // 改 else 分支中的定义 
#define DEBUG_CHANNEL_MESSAGES 1 
#define DEBUG_CHANNEL_LIFECYCLE 1 
#define DEBUG_TRANSPORT_ACTIONS 1 
#define DEBUG_RESAMPLING 1 
#endif 
static bool gInputLogEnabled = true;

frameworks/native/libs/input/inputTransport.cpp (for KK,L ,M版本) 
找到以下变量定义, 并将其值改为如下 
static bool gInputLogEnabled = true;

3、因为很多input无响应的问题,常常会跟window的focus扯上关系,如果有需要 
可以用下面的命令打开ams和wms的LOG。 
adb shell dumpsys activity log x on 
adb shell dumpsys window -d enable a

如何用getevent查看TouchPanel上报数据和如何抓取framework层input事件相关的日志相关推荐

  1. JAVA+网络数据包的抓取与分析实验

    一.实验目的 熟悉TC P/IP数据包的结构. 掌握Wireshark的使用方法. 能够利用JNet Pcap编程实现数据包的抓取与分析. 二.实验准备 1.通过抓包,可以进行网络故障分析.流量监控. ...

  2. 穿越火线数据包的抓取和分析及服务器欺骗的实现

    几天功夫,我们敬爱的穿越火线从2.5到2.6再到2.7再到现在的2.8,号称全服反外挂(的确是反了的),WPE会被检测为非法模块. 本人就来说一下自己关于穿越火线数据包的抓取和分析及服务器欺骗的实现的 ...

  3. Linux日常运维管理技巧(一)监控系统状态、监控网卡流量、监控IO性能、查看系统进程、查看网络状态、Linux下抓包tcpdump、Linux网络相关、DNS配置

    目录 监控系统状态 监控网卡流量 监控IO性能 查看系统进程 查看网络状态 Linux下抓包 Linux网络相关 监控系统状态 w/uptime查看系统负载 [root@zyshanlinux-01 ...

  4. python抓取数据库数据_Python爬虫抓取东方财富网股票数据并实现MySQL数据库存储...

    Python爬虫可以说是好玩又好用了.现想利用Python爬取网页股票数据保存到本地csv数据文件中,同时想把股票数据保存到MySQL数据库中.需求有了,剩下的就是实现了. 在开始之前,保证已经安装好 ...

  5. 微信小程序数据包教程抓取,看完就是学会

    有很多粉丝小伙伴问到能不能抓取到微信小程序数据呢?答案当然是肯定的,通过Fiddler或者Charles这些主流的抓包工具都可以抓得到,在IOS平台抓取微信小程序和https请求都是一样的设置,接下来 ...

  6. linux 抓取 组播数据,tcpdump指令抓取组播数据

    指令 tcpdump -i  eth0 port 8080 :  通过网口th0抓取端口号为8080的广播或组播数据: 如下: 18:08:47.459709 IP ralink.ralinktech ...

  7. 从IP数据包中抓取IP地址、端口号的方法

    使用抓包工具可以将从网口发来的数据包内包含的信息都显示出来,包括源端口.目的端口.源地址.目的地址 我使用的抓包工具是 Wireshark 初始界面: 我们要查看网口的数据包,就需要点击 捕获-> ...

  8. 网站手工添加一行数据_Power Query 抓取网贷问题平台数据

    网贷平台频繁暴雷,截止2019年12月共有5800家网贷平台出现问题,其中半数以上失联,仅有5.84%的平台警方介入处理. 今天我们来做一个问题平台数据的抓取测试,有很多网站提供网贷数据查询服务: 这 ...

  9. python如何爬虫股票数据_如何抓取股票数据_用Python抓取新浪的股票数据

    python爬虫成长之路(一)抓取证券之星的股票数据 其中编译匹配模式findall方法使用这个匹配模式来匹配所需的信息并以列表的形式返回.正则表达式的语法非常多.下面我只列出使用的符号的含义.匹配除 ...

  10. Wind数据个性化定制抓取

    1.前言 Wind(万德)金融终端是我校同学常用的商业软件,其中提供了大量的金融实施数据,丰富而翔实.Wind几乎是我见过的付费商业软件中用户体验最好的之一,然而正是由于其昂贵的价格,使得其保密性非常 ...

最新文章

  1. 学习微信小程序之css14浮动的特性
  2. Eclipse GBK批量转UTF-8插件
  3. hdu 6106 Classes
  4. vue.js分页组件(新手学习记录)
  5. 绘制二次三次曲线多次曲线
  6. 杭电OJ-2104_hide handkerchief超简洁代码
  7. C++还是Java常常无法想起数组
  8. python twisted教程 三–开始twisted
  9. 剑指offer面试题15. 二进制中1的个数(位运算)
  10. c# winform 设置winform进入窗口后在文本框里的默认焦点
  11. Could not find a version that satisfies the requirement torch==1.4.0 (from torchvision)
  12. python中grid的用法_SVM中如何使用grid.py
  13. 无线中继后要不要关闭dhcp服务器,tplink无线路由器WDS桥接后副路由开启DHCP 好还是关闭好。...
  14. 2017招商银行笔试01
  15. 世界期货市场竞争格局的变迁
  16. S5PV210 DDR2初始化 28个步骤总结
  17. 应用锁(AppLocker)原理及代码实现
  18. pandas选取数据方法
  19. RN-原生混合开发之热更新
  20. wifi的sta + ap模式

热门文章

  1. word批量转PDF怎么转
  2. 将16进制的字符串转换为对应的字符
  3. H5实现移动端,PC端页面分享
  4. 五笔字根表口诀的通俗易懂讲解
  5. ora-600[6002]解决
  6. 自回归(Autoregressive Models,AR)模型
  7. 玩转ESP8266-01——AT指令集
  8. Solaris 11.4安装,映像包管理系统(IPS)搭建
  9. Python实现CART决策树
  10. 设计模式学习书籍推荐(设计模式书籍你读过哪几本)