【发布时间】:2019-02-03 17:23:16
【问题描述】:
我想通过 ADB 以编程方式控制 Android 设备。
由于我必须滚动列表,我尝试通过如下命令滚动:
adb shell input touchscreen swipe 935 500 789 500 1000
这可行,但问题是 Android 添加了弹力/橡皮筋效果。因此,当滑动完成时,它仍然会滚动得更远一些。但是我需要完善像素,所以这种方法不能按我需要的方式工作。即使我将滑动持续时间增加到 3000 毫秒,它也会滚动更多像素。
是否有一个简单的技巧可以告诉 ADB/我的设备“在移动约 500 毫秒后滑动但按住手指,然后松开手指以防止甩动效应”?
我还尝试过手动控制事件。
因此我运行adb getevent,在设备上执行滑动并收集输出:
[...]
/dev/input/event6: 0000 0000 00000000
/dev/input/event6: 0003 0035 000000fb
/dev/input/event6: 0003 0030 0000000a
/dev/input/event6: 0000 0000 00000000
/dev/input/event6: 0003 0035 000000fa
/dev/input/event6: 0003 0030 0000000b
/dev/input/event6: 0000 0000 00000000
/dev/input/event6: 0003 0036 000001b6
/dev/input/event6: 0003 0030 0000000c
/dev/input/event6: 0000 0000 00000000
/dev/input/event6: 0003 0035 000000f9
/dev/input/event6: 0003 0030 0000000d
/dev/input/event6: 0000 0000 00000000
/dev/input/event6: 0003 0035 000000f8
/dev/input/event6: 0003 0030 0000000e
/dev/input/event6: 0000 0000 00000000
/dev/input/event6: 0003 0035 000000f7
/dev/input/event6: 0003 0030 0000000f
/dev/input/event6: 0000 0000 00000000
/dev/input/event6: 0003 0030 00000000
/dev/input/event6: 0003 0039 ffffffff
/dev/input/event6: 0000 0000 00000000
/dev/input/event6: 0003 002f 0000000c
/dev/input/event6: 0003 0039 0000000c
/dev/input/event6: 0003 0035 000000f7
/dev/input/event6: 0003 0036 000001b6
/dev/input/event6: 0000 0000 00000000
我想这应该告诉我我的事件是/dev/input/event6,我假设我需要的事件代码是0035、0036 和0039。
所以我尝试了一下,想出了一个方法,比如:
adb shell sendevent /dev/input/event6 3 53 935
adb shell sendevent /dev/input/event6 0 0 0
adb shell sendevent /dev/input/event6 3 54 500
adb shell sendevent /dev/input/event6 0 0 0
adb shell sendevent /dev/input/event6 3 57 1
adb shell sendevent /dev/input/event6 0 0 0
adb shell sendevent /dev/input/event6 3 53 789
adb shell sendevent /dev/input/event6 0 0 0
adb shell sendevent /dev/input/event6 3 54 500
adb shell sendevent /dev/input/event6 0 0 0
adb shell sendevent /dev/input/event6 3 57 0
adb shell sendevent /dev/input/event6 0 0 0
这也与here 类似。但它根本不起作用,设备上没有任何变化。由于我不知道下一步该尝试什么,或者我的方法是否正确,所以我想问你是否可以告诉我我的错误在哪里。
谢谢!
【问题讨论】: