我正在使用上面的代码来模拟使用 sendevent 的“滑动”:
sendevent /dev/input/event0 3 53 300 ;First position X
sendevent /dev/input/event0 3 54 600 ;First position Y
sendevent /dev/input/event0 3 48 5
sendevent /dev/input/event0 3 58 50
sendevent /dev/input/event0 0 2 0
sendevent /dev/input/event0 0 0 0
sendevent /dev/input/event0 3 53 300 ;Second position X
sendevent /dev/input/event0 3 54 400 ;Second position Y
sendevent /dev/input/event0 0 2 0
sendevent /dev/input/event0 0 0 0
sendevent /dev/input/event0 0 2 0
sendevent /dev/input/event0 0 0 0
Run Code Online (Sandbox Code Playgroud)
但是,它确实会立即滑动而没有任何延迟。
我试图弄清楚如何指定滑动的持续时间,就像您可以使用 adb shell 输入一样:
input [touchscreen|touchpad|touchnavigation] swipe <x1> <y1> <x2> <y2> [duration(ms)]
shell input swipe 300 400 300 200 2000
这会产生持续时间为 2 秒的滑动。
我试图在sleep 2之前添加 a
,;Second position但它确实导致滑动前暂停,而不是持续时间为 2 秒的滑动。
持续时间我的意思是,时间从位置 1 慢慢切换到位置 2。
小智 0
这样做的问题是发送事件sendevent需要一些时间。我制作了一个 python脚本(您可以从那里获取您需要的任何内容),在给定的点之间插入点。它还在点之间等待一段时间。
这是线性插值代码:
def lerp(p1:tuple, p2:tuple, points:int) -> list:
output = []
header = [_p2 - _p1 for _p1, _p2 in zip(p1, p2)]
for p in range(points + 1):
percent = p / points
output.append((p1[0] + percent * header[0], p1[1] + percent * header[1]))
return output
Run Code Online (Sandbox Code Playgroud)
使用多个点时会出现时间问题。使用具有 10 个插值点且它们之间没有时间的路径已经需要 1.29 秒,而 100 个点则需要 11.45 秒。
| 归档时间: |
|
| 查看次数: |
164 次 |
| 最近记录: |