通过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 或类似关键词的设备,并记下它对应的路径。

image

通过输出可以看到该设备有两个触摸屏设备,根据分辨率判断,/dev/input/event0 应该是主触摸屏(1920x1080 更符合常见屏幕尺寸)

 2,开始录制事件

# 进入 adb shell
adb shell

# 录制触摸事件,保存到 /sdcard/doubletap
cat /dev/input/event0 > /sdcard/doubletap

然后在屏幕上执行你想要模拟的操作(比如在某个位置双击)。

完成后,按 Ctrl+C 停止录制。

image

 

3,检查录制文件

# 退出 adb shell(如果还在里面)
exit

# 查看文件大小,确认有数据
adb shell ls -lh /sdcard/doubletap

image

 

 4,重放录制事件

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

image

 

如果不出意外的话,此时已完成录制—重放 的操作

可能出现的问题及解决方案

问题 1:Permission denied(权限被拒绝)

这是最常见的问题。如果出现这个错误,先获取 root 权限

问题 2:设备无响应或触摸错乱

如果重放后触摸位置不对,可能是因为:

  • 录制和重放时的屏幕方向不同(横屏/竖屏)

  • 设备分辨率在不同应用中发生了变化

解决方案:确保录制和重放时手机处于相同的屏幕方向和界面。

问题 3:文件过大

触摸事件文件可能很大(几MB到几十MB),录制时间不要太长。

录制 3-5 秒就够一次双击了,按 Ctrl+C 及时停止

 

这个方案成功意味着你可以:

  1. 录制任何复杂手势:双指点击、长按、滑动、缩放、旋转等,只要是在触摸屏上能做的操作,都可以录下来重放。

  2. 100% 还原度:因为记录的是原始硬件事件,重放效果和真人操作完全一致。

  3. 跨应用通用:不依赖于 UI 元素,在游戏、地图、浏览器等任何界面都能生效。

为了方便日常使用,你可以把这些命令封装成脚本,具体的封装方式或格式,没有固定答案,根据自己实际情况来。

 

posted @ 2026-08-19 18:14  干脆面666  Views(53)  Comments(0)    收藏  举报
/* 看板娘,这个是右侧那个 *,/ /* 点击鼠标烟花效果 */