已上架 · 华为应用市场
「我在这里」应用图标

我在这里

让你的 AI 知道你在哪

位置从手机发到你自己搭建的服务器,AI 随时能查。
数据不经过任何第三方。

23.190664 N
113.470556 E
ALT 42.0m
ACC 10.5m

这个 App 不自带服务器

它只做一件事:把你的位置发到一个地址。位置存在哪儿、谁能读,由你自己决定。

位置数据只存在你自己的服务器上。App 里没有我们的服务器,也没有任何第三方服务——「服务器地址」和「口令」来自你自己的后端,定位数据从手机直接进你的库。

所以第一次打开「位置共享」页时,你得先有一个地址和一个口令。三种情况:

已经有地址和口令

填进 App 的「位置共享」页,点「测试连接」确认通了,就能开始记录。

别人给你开了账号

如果后端是别人搭的(比如家人),向他要服务器地址和口令即可。

自己部署一套

后端 here-server 开源(Rust + SurrealDB),docker compose up 起服务,创建一个用户拿到口令。

九项核心能力

从定位采集到上报校验,从电量保护到接入自检,覆盖完整的上报链路。

01

持续定位上报

通过 ContinuousLocationRequest 由系统推送定位回调(默认 5 分钟一次,可调),再以 HTTP POST 把坐标发到你的服务器。

02

后台保活运行

通过 backgroundTaskManager 与 LOCATION 后台模式建立长时任务,锁屏及切换应用后持续定位不中断。

03

低电量保护

电量 ≤20% 时上报间隔自动放宽到 15 分钟;≤10% 时跳过上报,把电留给你自己。

04

失败重试机制

上报失败自动重试 3 次,间隔分别为 30 秒、60 秒、120 秒,确保数据可靠送达。

05

可视化状态面板

主页地图显示实时定位蓝点,面板显示最新经纬度与距上次上报的时长,运行状态一目了然。

06

可配置参数

定位间隔在设置页调整,服务器地址与上报口令在「位置共享」页配置,全部持久化存储。

07

双阶段权限申请

先前台定位、再后台定位分步授权;被拒绝时引导跳转系统设置页重新开启。

08

沉浸光感界面

HDS 沉浸光感标题栏与底部玻璃面板,配合三态操作按钮与涟漪动效,状态切换清晰直观。

09

接入自检与内嵌帮助

「测试连接」做只读探测、不写数据,保存后还会自动再验一次;地址填错或反代把请求跳走时,会直接告诉你「返回的不是服务接口」,而不是假装上报成功。「位置共享」页内置两篇部署帮助。

三层协作模型

手机负责采集与上报,你自己搭的后端负责接收与存储,AI Agent 通过 MCP 按需读取。

NODE A
HarmonyOS 应用
应用运行于华为手机,按设定间隔获取 GPS 定位,通过 HTTP POST 上报坐标数据。内置电量保护、后台保活与失败重试机制。
ArkTS / API 24
POST {服务器地址}
JSON + X-Location-Token
NODE B
自建后端(here-server)
跑在你自己机器上。Nginx / Caddy 加 TLS 接收上报请求,Rust(axum)校验口令后把位置写入 SurrealDB,同时通过 MCP 工具对外提供查询能力。开源,可以自己改。
nginx + Rust + SurrealDB
MCP 工具调用
get_locations
NODE C
AI Agent
任何支持 MCP 的 Agent 客户端都能接:通过 get_locations 工具读取你自己服务器上的位置数据,回答「他现在在哪」这类问题。
MCP 客户端

上报接口规范

App 只认这个契约,自己写后端照这个实现即可;here-server 已经实现好了。

POST {服务器地址}

请求头

Content-Type: application/json X-Location-Token: {token}

请求体

{ "lat": 23.190664, "lon": 113.470556, "timestamp": 1776854363, "source": "harmonyos", "accuracy": 10.5, "altitude": 42.0, "speed": 0.0 }

字段说明

字段 类型 必填 说明
latnumber是纬度(WGS84),范围 [-90, 90]
lonnumber是经度(WGS84),范围 [-180, 180]
timestampnumber是Unix 时间戳(秒)
sourcestring是固定值 "harmonyos"
accuracynumber否定位精度(米),无则 -1
altitudenumber否海拔(米),无则 -1
speednumber否速度(米/秒),无则 -1

响应状态码

响应App 的行为
200 且响应体是 JSON上报成功(here-server 返回 {"ok":true,"count":n})
200 但响应体不是 JSON判定失败并重试——跟随重定向后从网页拿到的 200 就属于这种
401口令无效,不可重试
422请求体格式错误(缺字段、类型不对),不可重试
5xx / 超时 / 网络异常进入重试:最多 3 次,间隔 30 / 60 / 120 秒

为什么光看 200 不够。HTTP 客户端默认跟随重定向:如果这个地址被反向代理的兜底规则或 CDN 301 到某个网页,请求最终也会拿到 200。所以 App 还会看一眼响应体——必须是接口返回的 JSON(以 { 或 [ 开头)才算成功。这条规则来自一次真实事故:地址没配好,请求一路 301 到博客首页拿到 200,App 显示「上报成功」,数据其实一条都没进库。

读接口

GET {服务器地址} X-Location-Token: {token}

返回该口令对应的最近记录(JSON 数组)。不写入任何数据——App 的「测试连接」用的就是这个接口,所以可以在设置页随便点。

三步用起来

手机端不开源,你不需要编译任何东西:准备好后端 → 装上 App → 填地址和口令。

1

先有一个后端

自己部署 here-server(开源,docker compose up 起服务,再创建用户拿到口令),或者向已经有后端的人要「服务器地址 + 口令」。没有后端,App 装上也收不到数据。详见 如何部署后端服务。

2

装上 App(华为应用市场)

在华为应用市场搜索我在这里,或点下面的按钮直接打开应用详情页安装。

打开应用市场详情页

3

填地址与口令,开始记录

「设置 →「位置共享」」填服务器地址与口令,点「测试连接」看到「连接正常,口令有效」再保存(保存后也会自动再验一次)。回到主页点「开始记录」,按提示依次授权前台与后台定位权限。

所需权限

ohos.permission.LOCATION ohos.permission.LOCATION_IN_BACKGROUND ohos.permission.APPROXIMATELY_LOCATION ohos.permission.KEEP_BACKGROUND_RUNNING ohos.permission.INTERNET

用户操作指南

操作方式
开始追踪主页点击「开始记录」,按提示依次授权前台与后台定位权限
停止追踪主页点击「停止记录」(划掉任务通知或卡片也会停止,且不会自动恢复)
修改定位间隔点击右上角齿轮图标进入设置页,选择「定位间隔时长」(≥ 1 分钟;低电量时自动放宽到 15 分钟)
配置服务器与口令设置页 →「位置共享」,填写服务器地址与口令后保存;页面顶部有三条路提示,指明地址和口令该从哪来
测试连接位置共享页点「测试连接」做只读校验(不写数据);保存后也会自动校验一次并回显结果
看部署帮助「位置共享」页内置两篇帮助文章,应用内直接阅读:为什么需要后端服务 / 如何部署后端服务
后台权限被拒应用弹窗提供「去设置」入口,可直接跳到系统设置开启后台定位

系统要求

项目要求
系统HarmonyOS 6.1 及以上,需 API Level 24(设置里看不到 API level,装不上基本就是这一步不够)
设备华为手机
后端你自己的服务器(本机、内网或公网均可),或别人给你的账号
网络手机需能访问到那个地址:同一 Wi-Fi、组网(Tailscale 等)或公网 + HTTPS
开源情况手机端闭源;后端 here-server 开源

这个 App 是谁做的

国冰,独立 AI 开发者。「我在这里」这个 App 是我自己写的;配套的后端服务开源(Apache-2.0)。
如果你在 AI 落地——智能体、自动化、视觉检测——上有想法但不知道怎么开始,欢迎来聊。首次沟通 15 分钟,初步判断场景能不能落地,不收费。

看看我能做什么