8

任何人都可以完全解释以下命令:

adb shell sendevent [device] [type] [code] [value]

我正在尝试使用发送事件命令为触摸事件编写脚本。

4

2 回答 2

8

首先,您需要在手机或平板电脑上找出触摸屏设备的名称。adb shell您可以在会话中使用此命令:

getevent -pl 2>&1 | sed -n '/^add/{h}/ABS_MT_TOUCH/{x;s/[^/]*//p}'

假设输入设备名称是/dev/input/event0,并且您想在坐标 x=300, y=400 处模拟快速点击:

sendevent /dev/input/event0 3 53 300
sendevent /dev/input/event0 3 54 400
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 0 2 0
sendevent /dev/input/event0 0 0 0

在相同坐标处的长触摸(比如说 1 秒长)将是:

sendevent /dev/input/event0 3 53 300
sendevent /dev/input/event0 3 54 400
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
sleep 1
sendevent /dev/input/event0 0 2 0
sendevent /dev/input/event0 0 0 0

有关这些命令的含义和确切含义的解释,请阅读在 Android 中使用 sendevent 模拟触摸屏交互

于 2013-06-23T16:58:06.910 回答
0

我使用 ZTE Blade(1.gen) CyanagenMod 7。屏幕分辨率为 480x800 经过反复试验,我发现为了按下坐标 240x 725y,我实际上必须像这样实现脚本:988 = 240x, 2768 = 725y

sendevent /dev/input/event0 3 53 988
sendevent /dev/input/event0 3 54 2768
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 0 2 0
sendevent /dev/input/event0 0 0 0

我以前用 get 事件记录事件,它给出的值是正确的,我只是不知道如何解释它们 = )。

于 2014-12-12T20:14:35.883 回答