通过getevent录制并重放屏幕操作事件
场景需求:
使用脚本操作屏幕时,受框架或某些方法或某些限制的影响,对一些特定的屏幕操作,使用原有的脚本不那么好操作。
例如
你可以使用adb shell "input tap x y && sleep 0.1 && input tap x y" 或 adb shell input swipe x1 y1 x2 y2 进行单指操作等
但没有对应的指令进行双指操作
解决思路:
通过adb中的getevent方法,可以来录制一次真实的手动操作事件,保存为文件,然后通过 cat 命令重放这个文件。
操作步骤:
adb root:需要root权限
1,找到触摸屏对应的设备文件
adb shell getevent -p:列出所有输入设备。你需要找到 name 字段包含 touchscreen、sec_touchscreen 或类似关键词的设备,并记下它对应的路径。

通过输出可以看到该设备有两个触摸屏设备,根据分辨率判断,/dev/input/event0 应该是主触摸屏(1920x1080 更符合常见屏幕尺寸)
2,开始录制事件
# 进入 adb shell
adb shell
# 录制触摸事件,保存到 /sdcard/doubletap
cat /dev/input/event0 > /sdcard/doubletap
然后在屏幕上执行你想要模拟的操作(比如在某个位置双击)。
完成后,按 Ctrl+C 停止录制。

3,检查录制文件
# 退出 adb shell(如果还在里面)
exit
# 查看文件大小,确认有数据
adb shell ls -lh /sdcard/doubletap

4,重放录制事件
# 将录制的文件重放到触摸屏设备
adb shell "cat /sdcard/doubletap > /dev/input/event0"

如果不出意外的话,此时已完成录制—重放 的操作
可能出现的问题及解决方案
问题 1:Permission denied(权限被拒绝)
这是最常见的问题。如果出现这个错误,先获取 root 权限
问题 2:设备无响应或触摸错乱
如果重放后触摸位置不对,可能是因为:
-
录制和重放时的屏幕方向不同(横屏/竖屏)
-
设备分辨率在不同应用中发生了变化
解决方案:确保录制和重放时手机处于相同的屏幕方向和界面。
问题 3:文件过大
触摸事件文件可能很大(几MB到几十MB),录制时间不要太长。
录制 3-5 秒就够一次双击了,按 Ctrl+C 及时停止
这个方案成功意味着你可以:
-
录制任何复杂手势:双指点击、长按、滑动、缩放、旋转等,只要是在触摸屏上能做的操作,都可以录下来重放。
-
100% 还原度:因为记录的是原始硬件事件,重放效果和真人操作完全一致。
-
跨应用通用:不依赖于 UI 元素,在游戏、地图、浏览器等任何界面都能生效。
为了方便日常使用,你可以把这些命令封装成脚本,具体的封装方式或格式,没有固定答案,根据自己实际情况来。

浙公网安备 33010602011771号