让一台云端运行的 OpenClaw 可以主动向你的 Android 手机请求定位,拿到较新的真实坐标,并在服务端进一步反解成中文地址。
目标场景:你的 OpenClaw 跑在云端,手机不在身边;当你问“我现在在哪”时,云端 OpenClaw 可以通过这个桥接链路向手机发起一次定位请求,再拿回新位置。
这个仓库包含两部分:
-
Android 定位桥 App
- 常驻前台服务
- 后台待命
- 接到指令后做一次精确定位
- 把定位结果上报到你的桥接服务
-
Location Bridge Server
- 接收手机上报的位置
- 暴露最新位置查询接口
- 给手机下发
locate_now指令 - 让云端 OpenClaw 可以直接调它
OpenClaw 云端实例本身拿不到你手机的真实位置;而官方 Android 客户端在某些机型/权限组合下,后台定位也不一定稳定。
这个桥接方案把问题拆开:
- 手机端只负责定位
- 服务端只负责调度和缓存
- 云端 OpenClaw 只负责调用和回答
android-app/ Android App
server/ FastAPI backend
tools/ 查询脚本示例
cd server
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
export BRIDGE_AUTH_TOKEN='replace-with-a-random-token'
./run.shcd android-app
./gradlew assembleDebugAPK 产物:
android-app/app/build/outputs/apk/debug/app-debug.apk
- 打开 App
- 申请权限
- 到系统里把定位改成 始终允许
- 关闭电池优化 / 允许后台活动 / 允许自启动
- 填写:
- 服务器地址
- 令牌
- 设备 ID
- 点击 保存并启动
python3 tools/query_location.py devices --token "$LOCATION_BRIDGE_TOKEN"
python3 tools/query_location.py request --device-id <device_id> --token "$LOCATION_BRIDGE_TOKEN"
python3 tools/query_location.py latest --device-id <device_id> --token "$LOCATION_BRIDGE_TOKEN" --reverse这个仓库默认采集的是真实 GPS 坐标(WGS84)。 如果你想让云端 OpenClaw 直接回答“真实中文地址”,可以在服务端或查询脚本侧再接一个逆地理编码服务(例如高德、滴滴,或你自己的地址服务)。
注意: 中国大陆常见地图服务(包括滴滴/高德系能力)使用的是 GCJ-02。如果你拿手机上传的 WGS84 坐标直接去反解,通常会偏移数百米。这个仓库里的 tools/query_location.py --reverse 已经内置 WGS84 → GCJ-02 转换,再去做中文地址反解。
公开版做过脱敏:
- 不预填任何服务器地址
- 不内置任何令牌
- 不携带任何个人设备 ID、生产 IP、私有路径或运行态数据
Android 后台稳定定位通常离不开:
- 前台服务
- 常驻通知
- 始终允许的定位权限
- 关闭电池优化
不同厂商系统的后台策略不同;如果你发现锁屏后成功率下降,优先检查这些系统设置。