You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在QtScrcpy连接安卓设备时用Python发送ADB命令

实现Python向多台安卓设备发送ADB按键命令(配合QtScrcpy投屏场景)

核心思路

QtScrcpy基于ADB实现设备通信,只要设备能被ADB识别,就能通过Python调用ADB命令向指定设备发送按键指令。核心是针对多台设备指定对应设备ID,避免命令发送混乱。

步骤实现

  1. 确认ADB环境就绪

    • 确保Windows系统已配置ADB环境变量,或在Python脚本中指定ADB绝对路径(如C:\platform-tools\adb.exe)。
    • 打开命令行执行adb devices,能列出所有已连接的安卓设备(含QtScrcpy连接的设备),则ADB识别正常。
  2. Python脚本实现多设备指令发送
    使用subprocess模块执行ADB命令,先获取所有设备ID,再遍历发送指定按键命令:

    import subprocess
    import re
    
    def get_adb_devices():
        # 执行adb devices并解析设备ID
        result = subprocess.run(['adb', 'devices'], capture_output=True, text=True)
        device_pattern = re.compile(r'^([\w\d:.]+)\s+device$', re.MULTILINE)
        return device_pattern.findall(result.stdout)
    
    def send_keyevent_to_device(device_id, keyevent=24):
        # 向指定设备发送按键指令
        cmd = ['adb', '-s', device_id, 'shell', 'input', 'keyevent', str(keyevent)]
        try:
            subprocess.run(cmd, check=True, capture_output=True, text=True)
            print(f"设备 {device_id} 按键指令发送成功")
        except subprocess.CalledProcessError as e:
            print(f"设备 {device_id} 指令发送失败: {e.stderr}")
    
    if __name__ == "__main__":
        connected_devices = get_adb_devices()
        if not connected_devices:
            print("未检测到已连接的安卓设备")
        else:
            print(f"检测到 {len(connected_devices)} 台设备,开始发送指令...")
            for device in connected_devices:
                send_keyevent_to_device(device)
    
  3. 与QtScrcpy的配合说明

    • QtScrcpy连接设备时会自动通过ADB建立通信,只要QtScrcpy能正常投屏控制,脚本就能识别对应设备ID。
    • 若只需给特定设备发指令,可在connected_devices列表中筛选目标设备ID,无需遍历所有设备。

注意事项

  • 设备连接状态变化(如断开重连)时,需重新运行脚本或添加定时检测设备状态的逻辑。
  • 部分设备需开启「USB调试」「允许模拟按键」权限,确保ADB能正常执行输入命令。

内容的提问来源于stack exchange,提问作者tomash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 18:48:24