标签:-- adb push position github 触摸 红色 jni sources 目标
本来直接使用 adb shell -> input 即可模拟 键盘事件,触屏事件keyevent ,text,tap
但是手上的这台目标Android机4.0.3系统的input只支持text和keyevent,不支持tap,无法模拟触屏点击事件.
usage: input [text|keyevent]
input text <string>
input keyevent <event_code>
于是开始寻找模拟触屏的替代解决方案.
最新的Android API.24模拟器的input支持范围很广:
Usage: input [<source>] <command> [<arg>...]
The sources are:
keyboard
mouse
joystick
touchnavigation
touchpad
trackball
dpad
stylus
gamepad
touchscreen
The commands and default sources are:
text <string> (Default: touchscreen)
keyevent [--longpress] <key code number or name> ... (Default: keyboard)
tap <x> <y> (Default: touchscreen)
swipe <x1> <y1> <x2> <y2> [duration(ms)] (Default: touchscreen)
press (Default: trackball)
roll (Default: trackball)
sendevent
命令
sendevent /dev/input/event1 1 330 1
adb push x.sh /data/local/tmp/x.sh
adb shell -> su -> sh /data/local/tmp/x.sh
在命令行窗口可见监听到很多event,类似以下内容
add device 1: /dev/input/event3
name: “bma222e”
add device 2: /dev/input/event2
name: “headset-keyboard”
add device 3: /dev/input/event1
name: “ft5x0x_ts”
add device 4: /dev/input/event0
name: “sprd-keypad”
/dev/input/event1: 0001 014a 00000001
/dev/input/event1: 0003 0030 000000c8
/dev/input/event1: 0003 0035 00000015
/dev/input/event1: 0003 0036 000002ff
/dev/input/event1: 0003 0032 00000001
/dev/input/event1: 0000 0002 00000000
/dev/input/event1: 0000 0000 00000000
/dev/input/event1: 0003 0030 000000c8
/dev/input/event1: 0003 0035 00000015
/dev/input/event1: 0003 0036 000002ff
/dev/input/event1: 0003 0032 00000001
/dev/input/event1: 0000 0002 00000000
/dev/input/event1: 0000 0000 00000000
/dev/input/event1: 0001 014a 00000000
/dev/input/event1: 0000 0000 00000000event [type] [code] [value]
(不同系统版本的手机监听到的内容可能不太一样.单点触控,和多点触控设备事件不一样.)
event0:name包含keypad字符串,键盘设备
event1:name包含ts字符串,触摸屏设备
event2:name包含headset,耳机相关控制设备(猜的)
提取”通用event”,”关键event“,类似以下内容
/dev/input/event1: 0001 014a 00000001
/dev/input/event1: 0003 0030 000000c8
/dev/input/event1: 0003 0035 000000f0
/dev/input/event1: 0003 0036 00000384
/dev/input/event1: 0003 0032 00000001
/dev/input/event1: 0000 0002 00000000
/dev/input/event1: 0000 0000 00000000
/dev/input/event1: 0001 014a 00000000
/dev/input/event1: 0000 0000 00000000关键event红色部分,分别试验出来对应的是X,Y坐标地址.可把16进制换算成10进制,得到具体数值.
经过实际真机测试,这个最小序列无法正确触发.看来还是没掌握底层原理.
下面是两点触摸支持的最小事件集序列:
ABS_MT_TOUCH_MAJOR 0x30
ABS_MT_POSITION_X 0x35
ABS_MT_POSITION_Y 0x36
SYN_MT_REPORT 0x02 //上报第一个点
ABS_MT_TOUCH_MAJOR
ABS_MT_POSITION_X
ABS_MT_POSITION_Y
SYN_MT_REPORT //上报第二个点
SYN_REPORT 0x00 //开始动作
标签:-- adb push position github 触摸 红色 jni sources 目标
原文地址:http://www.cnblogs.com/AsionTang/p/6211895.html