📦 Android GUI Automation — Android 图形界面 自动化

v1.0.0

使用 Termux 通过 uiautomator2 或 Tasker 自动化 Android 应用,实现点击、滑动、截图、文本提取、价格追踪和定时任务。

0· 0·0 当前·0 累计
smseow001 头像by @smseow001 (SMS)
0

运行时依赖

无特殊依赖

安装命令

点击复制
官方npx clawhub@latest install android-gui-automation
镜像加速npx clawhub@latest install android-gui-automation --registry https://cn.longxiaskill.com

技能文档

Android GUI 自动化 让 Hermes Agent(Termux)通过 uiautomator2 或 Tasker/MacroDroid 控制 Android APP,实现截图、点击、滑动、文字识别、比价监控、定时提醒等自动化操作。

核心功能 📸 截屏并识别文字/元素 👆 模拟点击、滑动、输入 🔍 搜索商品、比价、监控价格 ⏰ 定时任务 + 异常推送 📱 支持淘宝、微信、京东等主流 APP

架构概览 Hermes Agent (Termux) │ ├── 方案A:uiautomator2(免 Root,推荐) │ └── Python 脚本直接控制 │ └── 方案B:Tasker/MacroDroid(需 Root/自动化工具) └── Hermes → HTTP Intent → Tasker → 执行

方案A:uiautomator2(免 Root) 安装依赖 # Termux 执行 pkg install python python-pip pip install uiautomator2 pillow requests schedule

# 初始化(需先开 USB 调试) python -m uiautomator2 init

连接方式 import uiautomator2 as u2 # USB d = u2.connect('<手机IP>:5555') # 例 192.168.1.100:5555 # 无线 d = u2.connect() # 自动发现

基础操作 d.screenshot("screen.png") d.click(500, 800) d(text="搜索").click() d.swipe(500, 1000, 500, 300) d.set_fastinput_ime(True) d.send_keys("iPhone 16") d(text="搜索").wait(timeout=10) d.dump_xml()

方案B:Tasker/MacroDroid(更稳) Hermes → Tasker 触发链 Hermes(Python) → HTTP POST localhost:5000/task → Tasker Webhook → 无障碍操作

Tasker 配置 Profiles → Event → Net → HTTP Request 监听 http://localhost:5000/task 配置 Click/Swipe/Screenshot

Hermes 调用 import requests def tasker_do(action, x=None, y=None, text=None): payload = {k: v for k, v in locals().items() if v is not None} requests.post("http://localhost:5000/task", json=payload)

定时比价监控 # 淘宝比价脚本 scripts/taobao_price_monitor.py # crontab 定时 (crontab -l; echo "0 9,20 * cd ~/android-gui-automation && python3 taobao_price_monitor.py") | crontab -

环境变量 export ANDROID_DEVICE="192.168.1.100:5555" export PRODUCT="iPhone 16 256GB 黑色" export TARGET_PRICE=6000 export TG_BOT_TOKEN="your_token" export TG_CHAT_ID="your_chat_id"

通用 APP 操作模板 #!/usr/bin/env python3 import uiautomator2 as u2, time, sys, os DEVICE = os.getenv("ANDROID_DEVICE") APP_PACKAGE = os.getenv("APP_PACKAGE", "com.taobao.taobao") d = u2.connect(DEVICE)

def launch_app(p): d.app_stop(p); d.app_start(p); time.sleep(3)

def find_and_click(t, timeout=10): elem = d(text=t, timeout=timeout) if elem.exists: elem.click(); return True return False

def screenshot(name="screen"): path = f"/sdcard/{name}_{int(time.time())}.png" d.screenshot(path); print(f"截图: {path}"); return path

def swipe_up(): d.swipe(500, 1000, 500, 300); time.sleep(1)

def input_text(txt): d.set_fastinput_ime(True); d.send_keys(txt); d.set_fastinput_ime(False)

def main(): action = sys.argv[1] if len(sys.argv) > 1 else "screenshot" {"screenshot": screenshot, "scroll": swipe_up, "home": lambda: d.press("home")}.get(action, lambda: print("未知动作"))()

if __name__ == "__main__": main()

数据来源ClawHub ↗ · 中文优化:龙虾技能库