我去年买了个表(真的!这句不是骂人的),是小米旗下的华米出品的 Amazfit 运动手表,小米手环也是华米团队的产品,小米曾经仅凭小米手环一款产品就占据了全球可穿戴设备市场四分之一的出货量,价格屠夫的剽悍可见一斑。
我对智能手表的要求主要有三点:
- 便宜(穷啊,没办法┑( ̄Д  ̄)┍)
- 续航时间长(像 iWatch 那样不到两天就得充电实在不能忍受啊)
- 有独立 GPS 模块(不连接手机就可以记录跑步数据)
华米手表基本满足了我的要求,其宣称的“扔掉手机去跑步”的口号深得我心。我平时就喜欢跑步,每次一般都要跑上10公里,带个手机在口袋里晃来晃去实在不爽,用臂包固定在手臂上也不舒服。最理想的状态就是除了运动手表和蓝牙耳机之外啥也不带,这样跑着才爽快。
用了几次后发现,还是不能愉快地扔掉手机,因为华米手表的运动数据不能导出到悦跑圈,甚至不支持导出为 .tcx 、.gpx 等通用格式。悦跑圈的数据分析和跑步爱好者社区要比小米系的 App 好太多,我早已习惯在上面记录和累积跑步数据,总不能为了悦跑圈再带个手机吧。于是我就上网寻找可以把跑步数据从华米手表导出到悦跑圈的方法,还真给找到了,不过是曲线救国,方法比较繁琐,写篇文章记录一下。总的来说,就是从手表导出数据,用软件生成通用的格式文件,导入佳明的网站,再从佳明网站同步到颂拓网站,最后在悦跑圈 App 里同步颂拓的跑步数据。
1. 用 adb 备份手表数据
用 adb (Android Debug Bridge,谷歌官方 Android 系统调试工具,了解刷机的朋友很熟悉了,就不赘述了)备份手表数据,首先用数据线链接手表和电脑,我习惯先在命令行界面运行 adb devices 查看一下,List of devices attached 下面出现一串数字和 device,就说明手表已经连接好了。
C:\>adb devices
List of devices attached
52352008 device
然后运行以下命令,把数据导出为 export_data.ab
C:\>adb backup -noapk com.huami.watch.sport -f export_data.ab
Now unlock your device and confirm the backup operation.
命令行界面出现提示:Now unlock your device and confirm the backup operation.
这时手表屏幕如下面左图所示,在触摸屏上点右面备份我的数据
,稍等片刻,手表屏幕上显示备份已完成
,如下面右图所示:
这时在当前文件夹下就生成了一个 export_data.ab 文件,这是 Android 系统备份文件的格式。
2. 用 abe.jar 解压备份文件
abe 全称 Android Backup Extractor[1],是一个 Java 软件,需要先安装 Java 才能运行。安装 Java 后运行以下命令:
C:\>java -jar abe.jar unpack export_data.ab export_data.tar
在当前文件夹生成了一个 export_data.tar 文件,这是 Linux 的压缩文件格式,用解压软件解压,在子文件夹 db 下可以找到 sport_data.db 文件,这是一个数据库文件,包含着手表的跑步数据。
这两步是通用的,用这个方法可以在不解锁不 root 的情况下从 Android 手机或设备中导出数据以供他用。如果是 root 了的设备,则直接可以通过adb pull
命令导出文件:
adb pull /data/data/com.huami.watch.sport/databases/sport_data.db
3. 用 Amazfit Exporter 读取数据库文件
Amazfit Exporter[2] 是一个开源的 Python 软件,源代码发表在 Github 上,在 Github 上搜索一下,类似的还有 Amazfit GPX Export 、AmazfitWatch Export 等其他项目,但仍然好使的貌似只有这个了。
从 Github 下载源代码文件,在当前文件夹下新建 data 文件夹,安装好 Python 后运行amazfit_exporter_cli.py
,再按一次回车确认:
py amazfit_exporter_cli.py sport_data.db data
The last time it was sync: 1970-01-01 08:00:00
Press <Enter> to accept, 0 to resync everything>>
2016-09-14 19:46:06 activity:running syncing...
2016-09-16 19:01:14 activity:running syncing...
......
2017-06-16 07:33:15 activity:trail running syncing...
2017-08-15 19:09:06 activity:running syncing...
命令执行完以后,在 data 文件夹下生产了许多用时间命名的 .tcx 格式文件,如 20170815_110906Z.tcx。还有一个 lstupd.txt 的文件记录着本次导出的时间,下次执行命令的时候就只导出新记录了。如果还想导出全部记录,只需删除该文件即可。
4. 把文件上传到佳明网站
登陆 Garmin Connect[3]网站,点击右上角 上传或导入数据
,上传 .tcx 文件,就可以在网站上查看跑步记录了。
如果上传出现错误,可以通过 GPS Visualizer[4]网站把 .tcx 转为 .gpx,然后再上传到 Garmin Connect。
5. 用 MXActivityMover 把跑步记录从佳明同步到颂拓
打开 Suunto Movescount[5]网站,注册账号并登陆。下载 MXActivityMover[6]软件,即 mxamfx.jar,打开软件,在Settings
>Configuration
中填入 Activity ID和 Garmin Connect 的账号信息并保存:
打开 Garmin Connect 上的某一活动,可以在地址栏获取形如https://connect.garmin.cn/modern/activity/19070941
的网址,最后的数字即为 Activity ID。
理论上可以通过 Activity ID 或 .tcx 文件将跑步记录同步到 Suunto Movescount。
我试了 Activity ID,没有成功,用第3步得到的 .tcx 文件也没有成功。只有从 Garmin Connect 导出的 .tcx 文件,用 MXActivityMover 打开,点击Send
成功同步到了 Suunto Movescount。
注意:需要在 Suunto Movescount 设置里Connections
栏对 MXActivityMover 进行授权才能同步成功。
6. 在悦跑圈 App 中同步颂拓的跑步记录
在悦跑圈 App 功能
>链接运动设备
中选择颂拓,输入账号密码即可同步数据到悦跑圈了,同样也需要在 Suunto Movescount 的设置里对悦跑圈进行授权。
至此,终于通过繁琐的步骤实现了华米手表数据同步到悦跑圈,跑步不用再带手机开悦跑圈了,只需隔段时间同步一次即可。
后来发现,华米手表新出的开发板 Rom 已经支持导出 .gpx 格式了,恭喜华米走出了这开放的一步,不再像以前那样封闭。希望用户可以简单方便地在各平台互通共享自己的数据,而不仅仅囿于某一厂商。技术的乐趣在于折腾!