Chr*_*s D 4 script android shell shell-script adb
我有一个运行 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
Run Code Online (Sandbox Code Playgroud)
我在手机上点击一下,打开 showtouches,我可以看到触摸已经开始,但触摸仍然在手机上处于活动状态。
sendevent /dev/input/event6 3 57 -1
sendevent /dev/input/event6 0 2 0
sendevent /dev/input/event6 0 0 0
Run Code Online (Sandbox Code Playgroud)
或者甚至只是
sendevent /dev/input/event6 3 57 -1
sendevent /dev/input/event6 0 0 0
Run Code Online (Sandbox Code Playgroud)
然而,这些命令都不会导致触摸在手机上结束。
我尝试将所有这些放在手机本身的 shell 脚本上,并从 adb shell 运行脚本,但是结果是一样的。触摸的开始,而不是结束。
har*_*ymc 10
虽然没有你的环境,但我已经研究了这个问题。像您一样,可以找到各种文章,这些文章似乎总是对某些人有效,但对其他人无效。我的结论是,手机硬件/Android 版本/SDK 版本的组合之间存在差异,因此所有设置都没有一种解决方案。
您必须找出适合您的方法。请记住,软件的重大更新总是可以让您回到起点。
我发现的最简单的方法是使用input tap x y命令:
adb shell input tap x y
Run Code Online (Sandbox Code Playgroud)
并非所有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>
Run Code Online (Sandbox Code Playgroud)
另一种方法是使用Getevent来记录您触摸屏幕时发生的事件。取自这里:
记录一系列事件
设置电脑以将数据记录在文件中 (
/tmp/android-touch-events.log)Run Code Online (Sandbox Code Playgroud)$ adb shell getevent | grep --line-buffered ^/ | tee /tmp/android-touch-events.log- 在手机上做一些事情
- 停止 pc 上的 adb 命令
ctrl-c回放记录的事件
此命令将进行十六进制转换
awkRun Code Online (Sandbox Code Playgroud)$ 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是另一种工具,您可以使用,这表现在这里:
你可能想像这样使用monkeyrunner:
Run Code Online (Sandbox Code Playgroud)$ monkeyrunner >>> from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice >>> device = MonkeyRunner.waitForConnection() >>> device.touch(200, 400, MonkeyDevice.DOWN_AND_UP)您还可以进行拖动、启动活动等。查看MonkeyDevice的 api 。
参考:
| 归档时间: |
|
| 查看次数: |
13482 次 |
| 最近记录: |