Android getevent
详细用法如下:
- Usage: getevent [-t] [-n] [-s switchmask] [-S] [-v [mask]] [-d] [-p] [-i] [-l] [-q] [-c count] [-r] [device]
- switchfor given bits
- switch , dev=, name=, info=, vers=, pos. events=, props=)
- if Usage: sendevent <device> <type> <code> <value>
首先,adb shell进入android设备,运行getevent命令得到如下信息,为各类事件的驱动设备,每部
- add device : /dev/input/event1
- : /dev/input/event3
- : /dev/input/event2
- : /dev/input/event5
- for /dev/input/mice, Not a typewriter
- : /dev/input/event0
- : /dev/input/event4
在点击设备屏幕之后得到:
- /dev/input/event0: 000002a5
- 0000017b
- 000001cf
- 003a 0000001c
- ffffffff
- /dev/input/event0: EV_ABS ABS_MT_TRACKING_ID 000002a6
type: 输入设备类型,在手机系统中经常使用的键盘(keyboard)和小键盘(kaypad)属于按键设
备EV_KEY,轨迹球属于相对设备EV_REL,触摸屏属于绝对设备EV_ABS
code: 按键扫描码,区别于ASCII码和SDK中KeyEvent的键码
value: 附加码,1/0 down/up
一次touch此8行是必须的,如果是longTouch呢,在touch的基础上,重复若干次第2~6行,即看起
来可能是这样子:
- /dev/input/event0: EV_ABS ABS_MT_TRACKING_ID 000002a6
如果是drag呢,在longTouch的基础上,xy坐标从起点到终点是渐变的,其他可认为一样。
- /dev/input/event0:
所以清楚了之后,使用sendevent进行事件模拟就很轻松了,关键是从input.h中获取按键对应的扫
值得注意的是使用getevent获取的数值都是16进制的,而sendevent使用的是10进制的,需要进行
如点击坐标: 120,254
- sendevent /dev/input/event1 <---事件开始
- <---点击开始
- <--- 触摸范围
- <--- x坐标
- <--- y坐标
- <---点击结束(同步)
- <---事件结束
- <---事件同步
对于longTouch,重复几次上面提到的步骤,而drag再弄个坐标渐变。
- sendevent /dev/input/event0
模拟事件的话,可以转向input命令。
供的功能还不一样,但它毕竟好用啊,如下:
- usage: input ...
- input swipe <x1> <y1> <x2> <y2>
输入文本: input text abcdefg
按键 : input keyevent KEYCODE_MENU
点击 : input tap 100 300
拖拽 : input swipe 100 600 500 600
②对于longTouch,使用input如何模拟?
这是个难题