Android 应用
Android 节点应用:连接手册 + Canvas/Chat/Camera
支持概览
- 角色:伴侣节点应用(Android 不承载 Gateway)。
- 是否需要 Gateway:需要(在 macOS、Linux 或 Windows(WSL2)上运行)。
- 安装参考:''Getting Started'' + ''Pairing''。
- Gateway 参考:''Runbook'' + ''Configuration''。
- 协议:''Gateway protocol''(节点与控制面)。
系统控制
系统级控制(launchd/systemd)发生在 Gateway 主机上。见 ''Gateway''。
连接手册(Runbook)
Android 节点应用 ⇄(mDNS/NSD + WebSocket)⇄ Gateway
Android 直接连接到 Gateway WebSocket(默认 ws://<host>:18789)并使用由 Gateway 管理的配对机制。
#
前置条件
- 你可以在"主控"机器上运行 Gateway。
- Android 设备/模拟器可以访问 gateway WebSocket:
- 同一 LAN,通过 mDNS/NSD 发现,或
- 同一 Tailscale tailnet,通过 Wide-Area Bonjour / unicast DNS-SD(见下文),或
- 手动填写 gateway host/port(兜底)
- 你可以在 gateway 机器上运行 CLI(openclaw)(或通过 SSH 使用)。
#
1)启动 Gateway
openclaw gateway --port 18789 --verbose
确认日志中出现类似:
- listening on ws://0.0.0.0:18789
对于仅 tailnet 的部署(例如 Vienna ⇄ London,推荐),把 gateway 绑定到 tailnet IP:
- 在 gateway 主机的 ~/.openclaw/openclaw.json 中设置 ~/.openclaw/openclaw.json。
- 重启 Gateway / macOS 菜单栏应用。
#
2)验证发现(可选)
Tailnet(Vienna ⇄ London)通过 unicast DNS-SD 发现
Android 的 NSD/mDNS 发现无法跨网络。如果 Android 节点与 gateway 不在同一网络,但通过 Tailscale 连接,使用 Wide-Area Bonjour / unicast DNS-SD:
1. 在 gateway 主机上设置一个 DNS-SD zone(例如 openclaw.internal.),并发布 _openclaw-gw._tcp 记录。
2. 在 Tailscale 中为该域配置 split DNS,指向你的 DNS 服务器。
细节与 CoreDNS 示例见 ''Bonjour''。
#
3)从 Android 连接
在 Android 应用中:
- 应用通过 前台服务(常驻通知)保持与 gateway 的连接。
- 打开 Settings。
- 在 Discovered Gateways 中选择你的 gateway,然后点击 Connect。
- 若 mDNS 被阻断,使用 Advanced → Manual Gateway(host + port)并点击 Connect (Manual)。
首次配对成功后,Android 在启动时会自动尝试重连:
- 如果启用了手动 endpoint,则优先使用手动 endpoint;否则
- 尝试重连上一次发现到的 gateway(尽力而为)。
#
4)批准配对(CLI)
在 gateway 机器上:
openclaw nodes pending openclaw nodes approve <requestId>
配对细节:''/gateway/pairing''。
#
5)验证节点已连接
- 节点状态:
- 通过 Gateway:
PlatformsAndroidPage step 10: P3
6)Chat 与历史同步
Android 节点的 Chat 页面使用 gateway 的 primary session key(main),因此聊天历史与回复可与 WebChat 等客户端共享:
- 历史:chat.history
- 发送:chat.send
- 推送更新(尽力而为):chat.subscribe → event:"chat"
#
7)Canvas + 摄像头
##
Gateway Canvas Host(推荐展示网页内容)
如果你希望节点展示真实的 HTML/CSS/JS(由 Agent 在磁盘上编辑),让节点连接到 Gateway canvas host。
注意:节点使用独立的 canvas host,端口为 canvasHost.port(默认 18793)。
1. 在 gateway 主机创建 ~/.openclaw/workspace/canvas/index.html。
2. 让节点跳转到它(LAN):
Tailnet (optional): If both devices are on Tailscale, use MagicDNS or tailnet IP instead of .local, e.g., http://<gateway-magicdns>:18793/__openclaw__/canvas/.
此服务将实时重载客户端注入 HTML,并在文件更改时自动刷新。A2UI 主机位于 http://<gateway-host>:18793/__openclaw__/a2ui/。
Canvas 命令(仅前台可用):
- canvas.eval、canvas.snapshot、canvas.navigate(使用 '{"url":""}' 或 '{"url":"/"}' 回到默认 scaffold)。canvas.snapshot 返回 '{ format, base64 }'(默认 format="jpeg")。
- A2UI:canvas.a2ui.push、canvas.a2ui.reset(旧别名 canvas.a2ui.pushJSONL 仍可用)
摄像头命令(仅前台可用;受权限控制):
- camera.snap(jpg)
- camera.clip(mp4)
参数与 CLI helper 见 ''Camera node''。