原文 https://www.awen.me/post/604a23cc.html 这里图片贴不了
第 13 号台风"白海豚"的周末,外面风大雨大,哪儿也去不了。索性窝在家里,把上半年写的一个运动 App 拿出来折腾——目标很明确:让它能连上我的华为 Watch GT5 手表,同时把原版 App 那堆广告和混乱的信息全部清掉。
上半年我开发了一个运动记录 App ( RUNNINGGO ),骑行、跑步、心率带都能用,但一直有个遗憾:它连不上我的华为手表。手表上的心率、血氧、体温、HRV 、睡眠这些数据,官方 App 能看到,但广告太多、信息太乱,我想要一个干净、专注的记录工具,把运动数据统一收进来,再同步到自己的后端,随时在网页上看趋势。
华为手表的蓝牙私有协议没有公开文档,从零逆向工作量太大。好在有个开源项目 Gadgetbridge,已经把市面上大多数手环/手表的连接协议都实现了,其中就包括华为 Watch GT 系列的连接、配对手册和数据字典同步。
所以我的方案是:基于 Gadgetbridge ,只把华为相关的模块移植进来,其它品牌全部不要。具体包括:
这样既不用从零啃协议,也不会被 Gadgetbridge 里其它几十个品牌的代码拖累,包体和逻辑都保持精简。
这次改造我同时用了 DeepSeek-V4-Flash 和 Kimi 两个模型,分工协作:
实测下来,两个模型互补性很强。遇到协议解析卡住时,换一个模型换个思路,往往就有进展; UI 上的细节问题,另一个模型一眼就能看出来。这种"双模型结对"的开发方式,比单打独斗效率高不少。
除了 App 端,我还给这套体系配了一个 Go 后端( blog_api ,Gin 框架),专门负责生成 AI 运动建议:
GET /api/v1/workouts/advice?days=7,带 IP 限流,App 首页的卡片直接调它,支持 7 天 / 30 天切换deepseek-chat),输出结构化的总体评价、运动分析、健康指标、恢复状态、关注提醒和运动建议这样一来,App 首页的 AI 运动建议卡片背后是完整的"数据聚合 → 大模型分析 → 缓存下发"链路,7 天和 30 天两个视角随时切换。
数据链路打通之后,App 变成了一个纯粹的记录工具:
台风天在家折腾了一天,收获挺大:
博客预览数据 https://www.awen.me/marathon
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.