【shell】通过adb 模拟手机快速点击方法

在设计绝大多数场景的安卓手机、设备的ui脚本,都可以通过adb shell input XXX 去模拟点击、滑屏等完成。在工作中有一个场景,类似于要进入开发者选项之类的,需要快速点击某个区域N次进入。这时候通过使用

adb shell input tap XXX

去点击N次该区域并不成功,实际调试时发现原因是点击速度过慢。
这时候想到,是否可以直接向event里去写数据,跳过中间繁琐的过程。

1、测试

首先,可以通过getevent 指令来监听设备的event。

getevent -l

然后模拟快速点击屏幕,测试屏幕亮屏、息屏时,都可以获取

/dev/input/event0: EV_ABS       ABS_MT_PRESSURE      0000007f
/dev/input/event0: EV_ABS       ABS_MT_TOUCH_MAJOR   00000009
/dev/input/event0: EV_SYN       SYN_MT_REPORT        00000000
/dev/input/event0: EV_SYN       SYN_REPORT           00000000
/dev/input/event0: EV_KEY       BTN_TOUCH            UP
/dev/input/event0: EV_SYN       SYN_MT_REPORT        00000000

得到以下输出,这时候可以看到事件为event0。

这时候可以通过dd指令 ,获取这次操作的记录

$ dd if=/dev/input/event0 of=/sdcard/event0
^C0+15 records in
2+0 records out
1024 bytes transferred in 2.245 secs (456 bytes/sec)

获取到event0之后,就可以通过写入的方法,让设备执行上次的操作,可以使用dd指令反过来操作就可以,可以通过cat >> 追加的方式。

  • 方法一
dd if=/sdcard/event0 of=/dev/input/event0
  • 方法二
cat /sdcard/event0 >>  /dev/input/event0

2、问题

在使用时,无法将多次屏幕操作的event一次性让设备执行完,可能是数据写入太快的原因。

你可能感兴趣的:(【shell】通过adb 模拟手机快速点击方法)