You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Google Fit REST API按ActivityType聚合每日各运动距离数据?

按运动类型过滤并按天聚合Google Fit距离数据

太懂这种和Google Fit REST API死磕的感觉了——Android SDK确实把很多细节封装好了,REST这边就得自己抠参数。你已经搞定按天聚合步数,现在要拆分骑行、跑步这类特定运动的每日距离,其实核心是利用ActivityType过滤来精准抓取对应运动的距离数据,下面给你具体的实现方案:

方案1:单次请求聚合多种运动类型的每日距离

你可以在aggregateBy数组中为每种运动类型单独配置条目,这样一次请求就能拿到骑行、跑步等多种类型的每日距离统计。请求体示例如下:

{
  "aggregateBy": [
    {
      "dataTypeName": "com.google.distance.delta",
      "activityType": 1  // 对应骑行(CYCLING)
    },
    {
      "dataTypeName": "com.google.distance.delta",
      "activityType": 7  // 对应跑步(RUNNING)
    }
  ],
  "bucketByTime": {
    "durationMillis": 86400000  // 按天分桶
  },
  "startTimeMillis": YOUR_START_TIMESTAMP,
  "endTimeMillis": YOUR_END_TIMESTAMP
}

返回结果中,每个时间桶(天)会分别包含骑行和跑步的距离数据,你可以通过dataset.dataSourceId或者aggregateByIndex来区分不同运动类型的统计值。

方案2:针对单个运动类型单独请求

如果需要更灵活的控制(比如只统计跑步),可以针对单个运动类型发送请求,请求体示例:

{
  "aggregateBy": [
    {
      "dataTypeName": "com.google.distance.delta",
      "activityType": 7,  // 仅统计跑步
      "dataSourceId": "derived:com.google.distance.delta:com.google.android.gms:merge_distance_delta"  // 指定精准数据源,避免遗漏数据
    }
  ],
  "bucketByTime": {
    "durationMillis": 86400000
  },
  "startTimeMillis": YOUR_START_TIMESTAMP,
  "endTimeMillis": YOUR_END_TIMESTAMP
}

关键参数说明

  • ActivityType枚举值:常用运动类型的对应数值如下:
    • 1: 骑行(CYCLING)
    • 7: 跑步(RUNNING)
    • 3: 步行(WALKING)
    • 10: 游泳(SWIMMING)
  • 数据源ID:指定derived:com.google.distance.delta:com.google.android.gms:merge_distance_delta可以确保获取所有合并后的距离数据,避免因为数据源分散导致统计不全。

注意事项

  • 只有当距离数据是和明确的运动记录关联时,才能通过activityType过滤。如果是设备自动估计的通用距离(没有绑定运动类型),这部分数据会被过滤掉。
  • 确保你的OAuth权限包含https://www.googleapis.com/auth/fitness.activity.read和https://www.googleapis.com/auth/fitness.location.read,否则会有权限错误。

内容的提问来源于stack exchange,提问作者Andrew McOlash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:25:32