如何通过Android ADB实现无延迟连续屏幕点击操作
解决Android连续快速自动点击的方案
你遇到的问题核心是每次单独调用adb shell input tap都会产生一次adb连接开销,这就是速度慢的原因。下面是几个能大幅提升点击速度的方法:
方法1:在设备端执行本地Shell循环
把点击逻辑写成Shell脚本,推到Android设备上直接运行,只需要一次adb连接就能完成所有点击:
- 先在电脑上创建一个名为
fast_tap.sh的脚本:
#!/system/bin/sh # 循环点击坐标(x,y),这里示例循环100次 for i in $(seq 1 100); do input tap 500 500 # 可选:控制点击间隔,单位毫秒,比如10ms就是0.01秒 sleep 0.01 done
- 把脚本推到设备并赋予执行权限:
adb push fast_tap.sh /data/local/tmp/ adb shell chmod +x /data/local/tmp/fast_tap.sh
- 远程执行脚本:
adb shell /data/local/tmp/fast_tap.sh
这样点击速度能提升到几十次/秒,完全满足连续快速点击的需求。
方法2:使用底层sendevent命令(速度最快)
input tap其实是封装了sendevent,直接调用底层命令能进一步减少开销,速度更快。需要先找到你的触摸输入设备:
- 查看所有输入设备:
adb shell getevent -lp
找到带ABS_MT_POSITION_X和ABS_MT_POSITION_Y的设备,比如/dev/input/event2
- 模拟一次完整的触摸(按下+抬起),坐标(x,y)需要转换成对应的输入值(不同设备可能有不同的坐标范围,比如1080p屏幕是0-1079):
adb shell "sendevent /dev/input/event2 3 53 500 && sendevent /dev/input/event2 3 54 500 && sendevent /dev/input/event2 0 0 0 && sendevent /dev/input/event2 3 53 -1 && sendevent /dev/input/event2 3 54 -1 && sendevent /dev/input/event2 0 0 0"
把这个命令放到设备端的Shell循环里,速度能达到上百次/秒。
方法3:开发Android辅助功能APP(无需adb,长期使用推荐)
如果需要长期使用自动点击功能,直接做一个基于AccessibilityService的APP是最优解,系统级的点击速度极快,还能脱离电脑运行:
核心代码示例(Kotlin):
class AutoClickService : AccessibilityService() { override fun onAccessibilityEvent(event: AccessibilityEvent) {} override fun onInterrupt() {} fun startAutoClick(x: Int, y: Int, interval: Long) { Thread { while (true) { val click = GestureDescription.Builder() .addStroke(GestureDescription.StrokeDescription( Path().apply { moveTo(x.toFloat(), y.toFloat()) }, 0, 10 )) .build() dispatchGesture(click, null, null) Thread.sleep(interval) } }.start() } }
在APP里启动这个服务后,就能实现无延迟的连续点击。
操作演示

内容的提问来源于stack exchange,提问作者Tim Cruiz
相关产品推荐
相关产品推荐

