API 参考(Android)
当你需要自定义设备行为、把 Midscene 接入框架,或排查 adb 问题时,请查阅本节。关于通用构造函数(报告、Hook、缓存等)的参数说明,请参考平台无关的 API 参考。
Action Space(动作空间)
AndroidDevice 使用以下动作空间,Midscene Agent 在规划任务时可以使用这些操作:
Tap—— 点击元素。DoubleClick—— 双击元素。Input—— 输入文本,支持replace/append/clear模式,可选autoDismissKeyboard。Scroll—— 以元素为起点或从屏幕中央向上/下/左/右滚动,支持滚动到顶/底/左/右。DragAndDrop—— 从一个元素拖拽到另一个元素。KeyboardPress—— 按下指定键位。LongPress—— 长按目标元素,可选自定义时长。PullGesture—— 上拉或下拉(如下拉刷新),可选距离与持续时间。ClearInput—— 清空输入框内容。Launch—— 打开网页或package/.Activity。RunAdbShell—— 执行原始adb shell命令。AndroidBackButton—— 触发系统返回。AndroidHomeButton—— 回到桌面。AndroidRecentAppsButton—— 打开多任务/最近应用。
AndroidDevice
创建一个可供 AndroidAgent 驱动的 adb 设备实例。
导入
构造函数
设备选项
deviceId: string—— 来自adb devices或getConnectedDevices()的值。autoDismissKeyboard?: boolean—— 输入完成后自动隐藏键盘,默认true。keyboardDismissStrategy?: 'esc-first' | 'back-first'—— 关闭键盘的顺序,默认'esc-first'。androidAdbPath?: string—— adb 可执行文件的自定义路径。remoteAdbHost?: string/remoteAdbPort?: number—— 指向远程 adb server。imeStrategy?: 'always-yadb' | 'yadb-for-non-ascii'—— 控制何时调用 yadb 进行文本输入,默认'yadb-for-non-ascii'。'yadb-for-non-ascii'(默认)—— 对 Unicode 字符(包括 Latin Unicode 如 ö、é、ñ)、中文、日文以及格式化符号(如 %s、%d)使用 yadb。纯 ASCII 文本使用更快的原生adb input text。'always-yadb'—— 对所有文本输入始终使用 yadb,提供最大兼容性,但对纯 ASCII 文本稍慢。
displayId?: number—— 在设备镜像多个屏幕时,选择特定虚拟屏幕。screenshotResizeScale?: number—— 在发送给模型前对截图进行缩放,默认1 / devicePixelRatio。alwaysRefreshScreenInfo?: boolean—— 每一步都重新查询旋转角度与屏幕尺寸,默认false。scrcpyConfig?: object—— Scrcpy 高性能截图配置,默认关闭。详见下方 Scrcpy 截图模式。
Scrcpy 截图模式
默认情况下,Midscene 通过 adb shell screencap 截图,每次耗时约 500–2000ms。开启 Scrcpy 模式后,通过 H.264 视频流实时获取画面,每次截图耗时约 100–200ms。
开启方式:
可选参数:
Tip
Scrcpy 模式在连接失败时会自动降级到 ADB 截图,无需额外处理。
使用说明
- 可以使用
getConnectedDevices()发现设备,udid与adb devices输出一致。 - 可以使用
remoteAdbHost/remoteAdbPort连接远程 adb;如果 adb 不在 PATH 中,可设置androidAdbPath。
示例
快速开始
启动原生 App
AndroidAgent
将 Midscene 的 AI 规划能力绑定到 AndroidDevice,实现 UI 自动化。
导入
构造函数
Android 特有选项
customActions?: DeviceAction[]—— 通过defineAction扩展规划器的可用动作。appNameMapping?: Record<string, string>—— 将友好的应用名称映射到包名。当你在launch(target)里传入应用名称时,Agent 会在此映射中查找对应的包名;若未找到映射,则按原样尝试启动target。- 其余字段与 API constructors 一致:
generateReport、reportFileName、aiActionContext、modelConfig、cacheId、createOpenAIClient、onTaskStartTip等。
使用说明
Info
- 一个设备连接对应一个 Agent。
launch、runAdbShell等 Android 专属辅助函数也可在 YAML 脚本中使用,语法见 Android 平台特定动作。- 通用交互方法请查阅 API 参考(通用)。
Android 特有方法
agent.launch()
启动网页或原生 Android activity/package。
target: string—— 可以是网页 URL,也可以是package/.Activity形式的字符串,例如com.android.settings/.Settings,也可以是应用包名、URL 或应用名称。若传入应用名称且在appNameMapping中存在映射,将自动解析为对应包名;若未找到映射,则直接按target启动。
agent.runAdbShell()
通过连接的设备运行原始的 adb shell 命令。
command: string—— 原样传递给adb shell的命令。
导航辅助
agent.back(): Promise<void>—— 触发 Android 系统的返回操作。agent.home(): Promise<void>—— 返回桌面。agent.recentApps(): Promise<void>—— 打开多任务/最近应用界面。
辅助工具
agentFromAdbDevice()
从任意已连接的 adb 设备创建 AndroidAgent。
deviceId?: string—— 连接特定设备;留空表示使用“第一个可用设备”。opts?: PageAgentOpt & AndroidDeviceOpt—— 在一个对象中合并 Agent 选项与AndroidDevice的设置。
getConnectedDevices()
列举 Midscene 可驱动的 adb 设备。
相关阅读
- Android 快速开始 获取搭建与脚本示例。

