300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 通过adb模拟快速的屏幕点击 小米手机亲测有效

通过adb模拟快速的屏幕点击 小米手机亲测有效

时间:2023-04-09 08:44:21

相关推荐

通过adb模拟快速的屏幕点击 小米手机亲测有效

通过adb模拟快速的屏幕点击

tips:高版本的此方法行不通了,低于Android10的可以尝试一下,高版本的可以研究一下下面这个框架

Genymobile/scrcpy

最近在做远程控制,关于这个框架欢迎评论区讨论。

想必当你看到这篇文章之前,你可能已经尝试了很多,用下面所说的这种方法:

我们都知道通过下面的命令可以模拟屏幕单击:

adb shell input tap x y

但是发现在尝试了之后,手机的响应速度非常的慢,这显然不是我们想要的结果。

分析原因,这是因为adb是java环境的,发送到手机之后,系统在写入文件,然后响应事件,这一过程就显得很繁琐,你我们有没有什么办法去直接写入事件文件呢?

下面开始讲重点,记好笔记,要考

进入adb shell命令行输入getevent -l进入event事件的监听,这个时候命令行会block住,然后你在屏幕点击你想要点击的位置,你会发现会打印如下的信息:

/dev/input/event1: EV_ABS ABS_MT_TRACKING_ID 00000274 /dev/input/event1: EV_KEY BTN_TOUCH DOWN/dev/input/event1: EV_KEY BTN_TOOL_FINGERDOWN/dev/input/event1: EV_ABS ABS_MT_POSITION_X 0000025a /dev/input/event1: EV_ABS ABS_MT_POSITION_Y 000005c3 /dev/input/event1: EV_SYN SYN_REPORT 00000000 /dev/input/event1: EV_ABS ABS_MT_TRACKING_ID ffffffff /dev/input/event1: EV_KEY BTN_TOUCH UP /dev/input/event1: EV_KEY BTN_TOOL_FINGERUP /dev/input/event1: EV_SYN SYN_REPORT 00000000

ABS_MT_POSITION_XABS_MT_POSITION_Y就是你点击的位置,都是16进制的。但是我们的重点不在这里,我们的重点是前面的路径,也就是/dev/input/event1,这是系统的事件节点,同样我们可以的input目录下面发现很多这样的节点:

130|vince:/ # ls /dev/input/ event0 event2 event4 event6 eventX mouse0 event1 event3 event5 event7 mice mouse1

接下来我们把尝试把点击的事件文件记录下来,一开始我尝试下面的方法:

dd if=/dev/input/event1 of=/sdcard/event1

想通过这个方法来保存事件的信息,但是系统直接提示:意思就是没有数据写出,获得的文件是空白的,这很明显不行

1|vince:/ # dd if=/dev/input/event1 of=/sdcard/event1^C0+2 records in0+0 records out0 bytes transferred in 2.376 secs (0 bytes/sec)

然后我发现通过cat去打印event1,屏幕上面显示了一堆乱码,然后我机智的把这段乱码保存了起来:

cat /dev/input/event1 > /sdcard/event1

然后得到了一样的一行乱码

130|vince:/ # cat /sdcard/event1 ?L?\g?9v?L?\g?J?L?\g?E?L?\g?5??L?\g?63?L?\g?1?L?\g??L?\N9?????L?\NJ?L?\NE?L?\Nvi

紧接着,把这个文件直接写入的event1

dd if=/sdcard/event1 of=/dev/input/event1

终于有反应了,大功告成,最后写一个循环的脚本,就可以不断的点击了,nice~~

while : ; do dd if=/sdcard/event1 of=/dev/input/event1 ; done

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。