Android Input设备debug 查看底层时间上报和对应的设备技巧

来源:互联网 发布:vb程序设计是什么 编辑:程序博客网 时间:2024/05/22 20:14

一、驱动层

检查是否有点上报 adb shell getevent -l /dev/input/eventX

检查input设备支持的属性值 adb shell getevent -i /dev/input/eventX

或者可以采用adb shell ,然后直接输入getevent,这样可以把所有的时间都列出来。

如下所示

127|shell@android:/ $getevent
getevent
add device 1: /dev/input/event3
  name:     "ATMEL_TW"
add device 2: /dev/input/event4
  name:     "8660_handset"
add device 3: /dev/input/event2
  name:     "tmd2771_input"
could not get driver version for /dev/input/mice, Not a typewriter
add device 4: /dev/input/event0
  name:     "qualcomm-keypad"
add device 5: /dev/input/event1
  name:     "pmic8xxx_pwrkey"
/dev/input/event3: 0003 0039 00000000
/dev/input/event3: 0003 0035 000000ce
/dev/input/event3: 0003 0036 000002e6
/dev/input/event3: 0003 0030 00000003
/dev/input/event3: 0003 003a 000000c8
/dev/input/event3: 0000 0002 00000000
/dev/input/event3: 0000 0000 00000000

 

二、Native层

检查驱动上报的点是否被InputReader转发给上层 在TouchInputMapper::sync(nsecs_t when)函数中,打印相关的变量值,检查报点路径是否正常。

驱动已经报点,但是上层收不到点的情况大致有以下几种:

a. 设备模式被设为禁用模式,mDeviceMode == DEVICE_MODE_DISABLED 引起此问题的原因是,在注册input device时,有些属性值设置不合法,导致在configure阶段,走了异常流程;

b. 设备类型不正确,走了其他路径

三、Java层 在ViewRootImpl.java文件的onInputEvent( )函数中添加打印信息,检查底层上报的点,是否通过Framework层成功上报了。 一般来讲,如果onInputEvent能收到点,报点基本上是OK的。 有些特殊情况除外,报点的消息类型不正确或者TP的横竖坐标搞反了,会出现上层收点了,但是TP仍然无法正常使用。 以上是debug input子系统的几个关键地方,如果想debug更细一些,还可以划分更多关键点出来,但是根据我目前的调试经验,这几点基本够用了。希望这个能给大家在调试的时候提供一些帮助!

http://blog.csdn.net/wlwl0071986/article/details/11743423
0 0
原创粉丝点击