华为运动健康转为TCX数据

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载自夜明的孤行灯

本文链接地址: https://www.huangyunkun.com/2023/01/16/huawei-health-data-to-tcx-file/



华为运动健康是华为下面的健康APP,配合华为各种穿戴和健康类设备,可以获取丰富的运动健康数据。其中一部分设备价格低廉,数据获取性价比高,而且还可以结合部分手机传感器,提高精度的同时也降低了成本。华为APP自身虽然提供了一部分分析功能,但是相对简单,而且内部算法不透明,加上华为运动健康导出数据不带心率,这样数据根本没法直接使用。这种情况下就需要对数据进行二次处理和分析。我们用最廉价的方案 ,手环+GPS手机针对跑步、骑行数据举例。

原始数据获取

华为运动健康APP可以导出数据,但是数据只包含GPS坐标,没有心率、步频等数据,这样的数据实际上是没有价值的。这里有两个办法,一个是换区,由于国内外数据权利和安全等规定不同,海外区可以申请获取数据,虽然需要一定的手动操作,但是毕竟可以直接获取。第二个方法就是借助第三方APP,比如Health Sync导出数据。Health Sync提供一个月的试用,价格也不贵,相对来说是一个上手容易的选择,但是遗憾的是Health Sync导出的数据有一些问题,特别是在坐标偏移上,而且同步的数据也是经过加工的,本质上不是原始数据。

Health Sync获取数据的原理是通过华为运动健康的API获取数据,然后转为第三方平台的格式。这里我们也可以使用同样的思路。

通过参考华为官方的开发者文档,我们可以明确如下步骤:

  • 申请开发者账号
  • 申请健康数据权限
  • 使用自己的账号进行Oauth2登陆
  • 使用凭证访问数据

申请步骤就不提了,大家可以按需操作。Oauth2的认证方式有4种,既然考虑到单纯获取数据,直接走无服务化的模式,access token有效期1小时,每次使用都需要登陆。

由于官方SDK只有Android和JS的包,只能使用Rest API。这个API设计要按照文档来,详情数据是通过列表获取的,原始数据的数据类型如下:

  • com.huawei.instantaneous.exercise_heart_rate
  • com.huawei.instantaneous.location.sample
  • com.huawei.instantaneous.steps.rate
  • com.huawei.instantaneous.speed

分别对应心率、位置、步频、速度,由于设备本身的限制,心率和GPS相对可用,步频采样频率低,可供参考,华为还有一个sTag,精英版是2个,佩戴在足部,这个可以提供将近10种跑步数据,这个设备提供的步频、步幅有价值。

原始数据格式基本都是根据dataTypeName判断数据类型,再根据数据类型,从values里面针对获取。下面是一段示例

{
  "startTime": 1673587058212000000,
  "endTime": 1673587679688000000,
  "dataCollectorId": "raw:com.huawei.instantaneous.exercise_heart_rate:com.huawei.health:HUAWEI Health:HUAWEI Health:1190533025:1190533025",
  "samplePoints": [
    {
      "startTime": 1673587060000000000,
      "endTime": 1673587060000000000,
      "dataTypeName": "com.huawei.instantaneous.exercise_heart_rate",
      "value": [
        {
          "fieldName": "bpm",
          "floatValue": 87.0
        }
      ]
    },
    {
      "startTime": 1673587065000000000,
      "endTime": 1673587065000000000,
      "dataTypeName": "com.huawei.instantaneous.exercise_heart_rate",
      "value": [
        {
          "fieldName": "bpm",
          "floatValue": 87.0
        }
      ]
    }
  ]
}

TCX数据生成

由于原始数据的采样时间不匹配,还需要一些处理,处理方法很多,具体不展开。

TCX格式是Garmin提出的一种描述格式,另外还有若干扩展,常用的有ActivityGoals ActivityExtension UserProfile。TCX的使用广泛,很多平台都有支持,也有工具进行格式转换,支持分段、混合运动等,除了存储容量较大以外,大部分常规使用没有明显缺陷。FIT格式做了很多改进,但是易读性不好,更适用于设备间或者稳定的商业用途。

TCX可以直接从Garmin Connect导出,内容还是很好懂。最直接的处理就是每个Trackpoint对应了华为运动健康的采样点(建议以GPS点为标准)。

生成出的数据可以通过Garmin Connect导入,进而传入其他分析平台,比如Runalayze,Strava。当然大部分分析平台自身也支持TCX导入。

参考

https://developer.huawei.com/consumer/cn/hms/huaweihealth/

https://www.garmin.com/xmlschemas/TrainingCenterDatabasev2.xsd



本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载自夜明的孤行灯

本文链接地址: https://www.huangyunkun.com/2023/01/16/huawei-health-data-to-tcx-file/

发表评论