如何让adb tap变快(ADB+Python)

How to make adb tap fast (ADB+Python)

所以我使用 python 和 adb 为单人 android 游戏制作了一个机器人。 最大的问题是每次点击之间有大约 1 秒的延迟。

我是这样连接设备的-

from ppadb.client import Client

def Get_device_adb():
    adb = Client(host="127.0.0.1", port=5037)

    devices = adb.devices()
    if len(devices) == 0:
        print("No device attached")
        quit()

    return devices[0]

device = Get_device_adb()

并使用 shell 输入点击发送我的点击 -

taps = [(225, 750), (350, 800), ...]
for tap in taps:
    device.shell(f"input tap {tap[0]} {tap[1]}")

对于游戏,我需要尽可能快地一次又一次点击,目前它们之间有 1 秒的延迟。

顺便说一下,我真的希望这个脚本在 python 中 运行 而不是在 jython

那么有没有办法让 adb tap 更快?

您可以尝试 AndroidViewClient/cuelbra using CluebraTester2-public 后端,您可以获得更高的费率。

这是一个示例脚本

#! /usr/bin/env python3
# -*- coding: utf-8 -*-

import time
from com.dtmilano.android.viewclient import ViewClient

device, serialno = ViewClient.connectToDeviceOrExit()

kwargs2 = {'useuiautomatorhelper': True}
vc = ViewClient(device, serialno, **kwargs2)

taps = [(225, 750), (350, 800), (100, 100), (300, 300), (150, 150), (100, 200)]
for tap in taps:
    print(f'{time.time()}: touching @{tap}')
    vc.touch(tap[0], tap[1])

使用我可以获得的模拟器

1635459899.020685: touching @(225, 750)
1635459899.202344: touching @(350, 800)
1635459899.522454: touching @(100, 100)
1635459899.703721: touching @(300, 300)
1635459899.8933198: touching @(150, 150)
1635459903.257416: touching @(100, 200)

这给出了大约。每 200 毫秒触摸 1 次。

编辑

有一个新的答案,将每次点击的时间减少到大约 100 毫秒