使用 Google Health API 开发步数体验

Google Health API 使用 steps 区间数据类型来跟踪用户步数和活动数据。步数是衡量每日身体活动的基本指标,可帮助开发者跟踪健身进度、计算能量消耗,以及构建面向用户的每日活动摘要。

了解如何在应用中读取和构建步数指标,以便为用户提供最佳体验。

支持的数据类型

该 API 支持以下数据类型来跟踪步数:

表格:Google Health API 步数数据类型
数据类型 可用的
操作
范围
步骤
dataTypesteps
过滤参数steps
记录类型: 间隔
存储分辨率: 1 分钟

兼容的设备

list、reconcile、rollup、dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly

指南

将步数跟踪功能集成到应用中时,请遵循以下设计和实现准则。

速度和配速计算

Google 健康数据 API 使用标准公式来计算速度和配速:

  • 速度 = distance / time(hour)
  • 配速 = time(seconds) / distance

请求中指定的 Accept-Language 标头决定了距离单位。

每日概览

为了在旅行、时区变更或夏令时期间准确汇总每日步数,请勿执行客户端时长计算。请改为查询 dailyRollUp 端点,该端点会使用 UTC 偏移量自动协调实际数据缺口。汇总会返回一个 StepsRollupValue,其中包含 countSum 字段,表示所请求日期的累计总步数。

绘制界面(协调)

构建用于显示步数数据的界面元素时,请使用 reconcile 端点。如果多个数据源(例如智能手表和手机)同时记录了步数,reconcile 端点会解决冲突并合并数据流,以返回单个协调的数据流。

如需了解如何处理来自已连接的设备同步的重叠时间段和时间戳可变性,请参阅数据管理指南

日内跟踪和直方图

如需显示全天的详细用户活动(例如图表和图形),请执行以下操作:

  • 每小时或每分钟步数直方图:查询 rollUp 端点,使用 windowSize 参数指定时长(例如 60s 表示 1 分钟,3600s 表示 1 小时)。由于步数数据是以 1 分钟 (60s) 为间隔记录的,因此请将 windowSize 设置为至少 60s。窗口大小小于 1 分钟(例如 10s30s)的请求不会对单个分钟总数进行切分,而是将整个分钟的计数放入第一个匹配的子存储桶中。如需了解详情,请参阅汇总窗口大小和底层存储分辨率
  • 所有步数记录:使用 list 端点可获取最精细的原始步数记录。

rollUpdailyRollUpreconcile 端点接受 dataSourceFamily 参数,让您可以过滤来自特定来源组的数据。如需了解详情和使用示例,请参阅“过滤数据”指南的按数据源系列过滤部分。

使用 Webhook 进行实时同步

订阅 steps 数据类型集合,以便在导入或同步新的步数数据时获得实时通知。无需轮询 REST 端点,而是根据这些 Webhook 通知动态更新客户端信息中心。如需详细了解如何设置订阅,请参阅 Webhook 订阅

处理真实零值

Google 健康数据 API 会实现真正的零值来解决久坐时间段问题。如果用户在特定时间段内佩戴了手环,但没有行走,则该 API 会返回相应时间段的记录,其中包含正常的数据源和时间戳元数据,但会省略 count 属性。

这样一来,您就可以区分以下情况:

  • 静止佩戴时长:用户佩戴了设备,但未行走。这会返回不含 count 属性(解释为零步数)的记录。
  • 摘下手环时段:用户未佩戴设备。这不会返回任何记录,从而导致出现较大的数据缺口。

如需了解详情,请参阅数据存在情况和实际零值指南。