记录一系列事件

记录一系列事件

我有一台运行 CM13 的 HTC 10,我正尝试通过 ADB 和发送事件向它发送触摸事件,发送后:

adb shell
sendevent /dev/input/event6 3 57 0
sendevent /dev/input/event6 3 53 300
sendevent /dev/input/event6 3 54 400
sendevent /dev/input/event6 3 48 5
sendevent /dev/input/event6 3 58 50
sendevent /dev/input/event6 0 2 0
sendevent /dev/input/event6 0 0 0

我在手机上收到一次点击,打开 showtouches 后,我可以看到触摸已经开始,但触摸在手机上仍然处于活动状态。

根据我的阅读这里这里以及其他地方,看来我应该做的就是:

sendevent /dev/input/event6 3 57 -1
sendevent /dev/input/event6 0 2 0
sendevent /dev/input/event6 0 0 0

或者甚至可能只是

sendevent /dev/input/event6 3 57 -1
sendevent /dev/input/event6 0 0 0

然而,这两个命令都不会导致手机上的触摸结束。

我尝试将所有这些放在手机上的 shell 脚本中,然后从 adb shell 运行该脚本,但结果是一样的。触摸开始,而不是结束。

答案1

尽管我没有您的环境,但我还是研究了这个问题。和您一样,可以找到各种文章,这些文章似乎对某些人有用,但对其他人却无效。我的结论是,手机硬件/Android 版本/SDK 版本的组合存在差异,因此没有一种解决方案可以适用于所有设置。

你必须找出适合自己的方法。请记住,软件的重大更新总是会让你回到起点。

我发现最简单的方法是使用以下input tap x y命令:

adb shell input tap x y

并非所有input版本都有tap参数,但在没有参数的情况下启动它将打印所有可用的参数和语法:

shell@m0:/ $ input
input
usage: input ...
       input text <string>
       input keyevent <key code number or name>
       input [touchscreen|touchpad|touchnavigation] tap <x> <y>
       input [touchscreen|touchpad|touchnavigation] swipe <x1> <y1> <x2> <y2> [duration(ms)]
       input trackball press
       input trackball roll <dx> <dy>

另一种方法是使用获取事件记录触摸屏幕时发生的事件。摘自这里

记录一系列事件

  1. 设置 PC 以将数据记录到文件中 ( /tmp/android-touch-events.log)

    $ adb shell getevent | grep --line-buffered ^/ | tee /tmp/android-touch-events.log
    
  2. 在手机上做一些事情
  3. 使用以下命令停止 PC 上的 adb 命令ctrl-c

重播已记录的事件

此命令将执行十六进制转换awk

$ awk '{printf "%s %d %d %d\n", substr($1, 1, length($1) -1), strtonum("0x"$2), strtonum("0x"$3), strtonum("0x"$4)}' /tmp/android-touch-events.log | xargs -l adb shell sendevent

请注意,Getevent 以十六进制显示其参数,但只接受十进制输入,上述脚本试图纠正这个问题。

猴子跑者是您可以使用的另一种工具,如演示所示这里

你可能想要使用猴子跑者像这样:

$ monkeyrunner
>>> from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice
>>> device = MonkeyRunner.waitForConnection()
>>> device.touch(200, 400, MonkeyDevice.DOWN_AND_UP)

您还可以进行拖动、启动活动等。请查看 API 猴子设备

参考:

相关内容