返回顶部
a

adb-phone-controlADB手机控制

Use when the user asks to control, operate, or automate an Android phone via ADB — tapping, swiping, typing, launching apps, or any UI interaction on a connected device

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.1
安全检测
已通过
153
下载量
免费
免费
0
收藏
概述
安装方式
版本历史

adb-phone-control

ADB 手机控制

通过结构化的观察-定位-操作-验证循环,使用 ADB 控制 Android 设备。

要求

  • - adb — Android 调试桥,必须已加入 PATH 环境变量
  • python3 — appexplorer.py 所需
  • ADBOUTPUT_DIR(可选环境变量)— 保存截图和 UI 转储文件的目录;默认为当前工作目录

使用的权限

本技能在已连接的 Android 设备上执行以下操作:

  • - adb shell input — 点击、滑动、文本输入
  • adb shell uiautomator dump — UI 层级结构提取
  • adb shell screencap — 屏幕截图
  • adb shell am broadcast — ADBKeyboard 输入法输入(用于中日韩文字)
  • adb shell service call clipboard — 基于剪贴板的文本输入备用方案

前置条件

在任何操作之前,请验证设备连接:

bash
adb devices

如果未找到设备,请指示用户:

  1. 1. 通过 USB 连接并启用 USB 调试
  2. 或通过无线连接:adb connect :5555

核心原则

切勿根据截图猜测坐标。始终优先使用 UI 层级结构作为定位依据。

截图仅用于人类可读的上下文和视觉验证。UI 转储文件提供精确的像素边界。

操作循环

每次交互遵循以下循环:

┌─────────────────────────────────────────┐
│ 1. 观察 — 转储 UI + 截图 │
│ 2. 定位 — 按文本/ID 查找元素 │
│ 3. 操作 — 点击 / 滑动 / 输入 │
│ 4. 验证 — 再次截图 + 转储 │
│ 5. 重复 — 执行下一步或完成 │
└─────────────────────────────────────────┘

切勿跳过验证步骤。 UI 转换可能需要时间;在继续之前务必确认。

辅助函数

在开始任何操作会话之前,请加载辅助脚本:

bash
source $(dirname ${BASH_SOURCE[0]:-$0})/adb-helpers.sh 2>/dev/null || source ./adb-helpers.sh

可用函数

函数用法描述
adbdumpadbdump将 UI 层级结构转储到 /tmp/uidump.xml
adbscreenshot
adbscreenshot | 截取屏幕到 /tmp/adbscreen.png | | adbobserve | adbobserve | 一次调用完成 UI 转储 + 截图 | | adbtaptext 提交 | 按文本查找元素,点击中心 | | | adbtapid btn_send | 按资源 ID 查找元素,点击中心 | | | adbtapxy 540 1200 | 点击精确坐标 | | | adb_swipe x1 y1 x2 y2 [毫秒] | 在两点之间滑动(默认 300 毫秒) | | | adbinputtext 你好 | 输入文本(支持空格和中日韩文字) | | | adb_key <键码> | 发送按键事件(返回、主页、回车等) | | | adbhidekeyboard | 按返回键关闭键盘 | | | adbscrolldown | 向上滑动以向下滚动内容 | | | adbscrollup | 向下滑动以向上滚动内容 | | | adblongpress x y [毫秒] | 在坐标处长按(默认 1000 毫秒) | | | adb_wait [秒] | 在下一步操作前等待(默认 1 秒) | | | adbscreensize | 获取设备屏幕分辨率 | | | adblaunchapp <包名> | 按包名启动应用 | | | adbfindpackage <关键词> | 按关键词搜索已安装的包 | | | adbboundscenter 边界字符串 | 解析 [x1,y1][x2,y2] → 中心点 x y | |

元素查找详情

adbtaptext 和 adbtapid 的工作方式:

  1. 1. 运行 adb_dump 获取最新的 UI 层级结构
  2. 解析 XML,查找匹配的 text= 或 resource-id= 属性
  3. 提取 bounds=[x1,y1][x2,y2] 属性
  4. 计算中心点:((x1+x2)/2, (y1+y2)/2)
  5. 执行 adb shell input tap

如果找到多个匹配项,函数会点击第一个匹配项并打印警告。
如果未找到匹配项,函数会打印错误 — 回退到 adb_screenshot + 使用读取工具进行视觉检查。

标准操作流程

阶段 1:设置

bash

加载辅助函数


source $(dirname ${BASH_SOURCE[0]:-$0})/adb-helpers.sh 2>/dev/null || source ./adb-helpers.sh

验证连接

adb devices

获取屏幕分辨率(对滑动计算很重要)

adbscreensize

阶段 2:导航与操作

对于每个交互步骤:

bash

1. 观察当前状态


adb_observe

然后使用读取工具查看 /tmp/adb_screen.png 以查看屏幕

2. 定位并操作(优先使用文本/ID,而非原始坐标)

adbtaptext 创建

或:adbtapid iv_send

或作为最后手段:adbtapxy 540 2009

3. 等待转换

adb_wait 2

4. 验证结果

adb_screenshot

然后读取 /tmp/adb_screen.png 以确认操作生效

阶段 3:文本输入

bash

先点击输入框


adbtaptext 搜索...
adb_wait 1

输入文本

adbinputtext 你好世界

在点击其他元素前关闭键盘

adbhidekeyboard adb_wait 1

现在可以安全点击其他按钮

adbtaptext 发送

关键规则

1. 先转储 UI,后截图

  • - uiautomator dump 提供精确的边界、元素状态(启用/聚焦/可点击)、文本内容和资源 ID
  • 截图仅用于:视觉验证、理解布局上下文,或 UI 转储失败时(例如动画、WebView 内容)
  • 当 UI 转储返回带有 NAF=true 的元素时,该元素没有可访问框架信息 — 使用截图 + 坐标作为备用方案

2. 键盘感知

  • - 在点击非输入元素之前,务必关闭键盘。 键盘会改变布局,使 UI 转储的边界失效。
  • 输入后,在点击其他内容之前,先调用 adbhidekeyboard,然后调用 adb_dump。
  • 如果 uiautomator dump 返回 ERROR: could not get idle state,键盘动画可能仍在运行 — 等待 1 秒后重试。

3. 等待策略

  • - 点击后:在下次转储/截图前等待 1 秒
  • 启动应用后:等待 2-3 秒
  • 页面导航后:等待 2 秒
  • 输入后:等待 0.5 秒
  • 如果操作后 UI 未变化:延长等待时间,最多 5 秒,然后重新检查
  • 切勿在未验证的情况下盲目链式操作

4. 中文 / 中日韩文字输入

adb shell input text 本身不支持中日韩字符。辅助函数 adbinputtext 通过以下方式处理:

  • - 如果可用,使用 adb shell am broadcast 配合 ADBKeyboard
  • 回退到基于剪贴板的输入:通过 adb shell service call clipboard 复制到剪贴板,然后粘贴

如果已安装 ADB Keyboard IME(com.android.adbkeyboard),请启用它:
bash
adb shell ime set com.android.adbkeyboard/.AdbIME

5. 坐标系统

  • - 所有坐标均为物理像素,与设备分辨率匹配
  • adb shell wm size 返回标准分辨率(例如 1080x2340)
  • 截图像素尺寸可能与设备分辨率不同 — 切勿根据截图像素位置估算坐标
  • 始终从 uiautomator dump 的边界中获取坐标

6. 处理失败

如果操作未产生预期结果:

  1. 1. 重新转储 UI 层级结构 — 元素可能已

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 adb-phone-control-1775888701 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 adb-phone-control-1775888701 技能

通过命令行安装

skillhub install adb-phone-control-1775888701

下载

⬇ 下载 adb-phone-control v1.0.1(免费)

文件大小: 12.26 KB | 发布时间: 2026-4-12 08:38

v1.0.1 最新 2026-4-12 08:38
**Changelog for adb-phone-control v1.0.1**

- Added explicit requirements section: now documents dependencies on `adb`, `python3`, and optional `ADB_OUTPUT_DIR` environment variable.
- Detailed permission usage for device operations via ADB, covering input events, UI dump, screencap, IME broadcast, and clipboard.
- Minor documentation edits: new "Requirements" and "Permissions Used" sections, clarifications for user setup.
- No code or functional changes; this is a documentation enhancement for improved clarity and onboarding.

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部