下表包含完整的数据类型列表,其中有多个列可帮助您了解每种类型在 Google Health API 中的表示形式,以及每种类型可用的范围。
数据类型字段
Google Health API 数据类型表包含多个字段列,可帮助您了解每种数据类型的表示形式和要求。这些列如下:
| 字段 | 说明 |
|---|---|
dataType |
端点网址中使用的以连字符分隔的标识符(例如 active-minutes)。 |
filter 参数 |
用下划线分隔的标识符(例如 active_minutes),在每日汇总和汇总请求中用作 dataType 过滤条件参数的值。 |
| 记录类型 | 指明所记录数据的结构和格式。在底层,这与数据点的资源表示形式保持一致。可能的值包括:
|
| 可用的操作 | 列出数据类型(例如 list、create 和 rollUp)支持的 API 方法。 |
| 范围 | 访问相应数据类型所需的 OAuth 范围。 |
| 网络钩子支持 | 表示数据类型支持在同步新数据时使用 Webhook 进行实时通知。 |
| 支持真正的零 | 表示相应数据类型支持记录明确的零值,以便区分有效零值(例如零有效分钟数)与缺失或未记录的数据。 |
| 存储分辨率 | 存储数据点的最小记录或采样间隔(例如,steps 为 1 分钟)。对于汇总,这表示建议的最小 windowSize,以确保均匀分布的聚合,而不会出现子间隔数据伪影。 |
| 兼容的设备 | 可记录并将此数据类型同步到 Google Health API(使用 Fitbit 应用)的实体设备的展开式列表。 |
| 数据类型 | 可用的 操作 |
范围 |
|---|---|---|
|
消耗的活动能量
|
list、reconcile、rollup、dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
活跃分钟数
dataType:
active-minutesfilter parameter: active_minutes
记录类型: 间隔
存储分辨率: 1 分钟
兼容的设备
|
list、reconcile、rollup、dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
活跃区间分钟数
dataType:
active-zone-minutesfilter parameter: active_zone_minutes
记录类型: 间隔
存储分辨率: 1 分钟
兼容的设备
|
list、reconcile、rollup、dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
活动级别
|
list、reconcile | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
海拔
|
list、reconcile、rollup、dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
血糖
|
list、get、reconcile、rollup、dailyRollup | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
体脂率
dataType:
body-fatfilter parameter: body_fat
记录类型: 示例
兼容的设备
|
list、get、reconcile、rollup、dailyRollup、create、update、batchDelete | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
心率区间内的卡路里消耗
dataType:
calories-in-heart-rate-zonefilter parameter: calories_in_heart_rate_zone
记录类型: 间隔
存储分辨率: 1 分钟
|
汇总,dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
核心体温
|
list、get、reconcile、rollup、dailyRollup | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
每日心率变异性
dataType:
daily-heart-rate-variabilityfilter parameter: daily_heart_rate_variability
记录类型: 每日
兼容的设备
|
list、reconcile | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
每日心率区间
|
list、reconcile | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
每日血氧饱和度
dataType:
daily-oxygen-saturationfilter parameter: daily_oxygen_saturation
记录类型: 每日
兼容的设备
|
list、reconcile | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
每日呼吸频率
dataType:
daily-respiratory-ratefilter parameter: daily_respiratory_rate
记录类型: 每日
兼容的设备
|
list、reconcile | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
每日静息心率
dataType:
daily-resting-heart-ratefilter parameter: daily_resting_heart_rate
记录类型: 每日
兼容的设备
|
list、reconcile | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
每日睡眠温度推导
dataType:
daily-sleep-temperature-derivationsfilter parameter: daily_sleep_temperature_derivations
记录类型: 每日
兼容的设备
|
list、reconcile | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
每日最大摄氧量
dataType:
daily-vo2-maxfilter parameter: daily_vo2_max
记录类型: 每日
兼容的设备
|
list、reconcile | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
距离
dataType:
distancefilter parameter: distance
记录类型: 间隔
存储分辨率: 1 分钟
兼容的设备
|
list、reconcile、rollup、dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
心电图 (ECG)
dataType:
electrocardiogramfilter parameter: electrocardiogram
记录类型: 会话
兼容的设备
|
list | .ecg.readonly |
|
锻炼
dataType:
exercisefilter parameter: exercise
记录类型: 会话
兼容的设备
|
list、get、reconcile、create、update、batchDelete | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
爬楼层数
|
对账、汇总、dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
食品
|
list、get | .nutrition.readonly.nutrition.writeonly |
|
食物测量单位
dataType:
food-measurement-unitfilter parameter: food_measurement_unit
记录类型: 食物
兼容的设备
|
list、get | .nutrition.readonly.nutrition.writeonly |
|
心率
dataType:
heart-ratefilter parameter: heart_rate
记录类型: 示例
存储分辨率: 1 秒 (1s)
兼容的设备
|
list、reconcile、rollup、dailyRollup | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
心率变异性
dataType:
heart-rate-variabilityfilter parameter: heart_rate_variability
记录类型: 示例
兼容的设备
|
list、reconcile | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
身高
|
list、get、reconcile、create、update、batchDelete | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
饮水量记录
|
list、get、reconcile、rollup、dailyRollup、create、update、batchDelete | .nutrition.readonly.nutrition.writeonly |
|
心律不齐通知
dataType:
irregular-rhythm-notificationfilter parameter: irregular_rhythm_notification
记录类型: 会话
|
list | .irn.readonly |
|
月经期
|
create、update、batchDelete | .reproductive_health.writeonly |
|
情绪
|
create、update、batchDelete | .mindfulness.writeonly |
|
营养记录
dataType:
nutrition-logfilter parameter: nutrition_log
记录类型: 会话
兼容的设备
|
list、get、reconcile、rollup、dailyRollup、create、update、batchDelete | .nutrition.readonly.nutrition.writeonly |
|
排卵检测
|
create、update、batchDelete | .reproductive_health.writeonly |
|
血氧饱和度
dataType:
oxygen-saturationfilter parameter: oxygen_saturation
记录类型: 示例
兼容的设备
|
list、reconcile | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
呼吸频率睡眠摘要
dataType:
respiratory-rate-sleep-summaryfilter parameter: respiratory_rate_sleep_summary
记录类型: 示例
兼容的设备
|
list、reconcile | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
跑步最大摄氧量
dataType:
run-vo2-maxfilter parameter: run_vo2_max
记录类型: 示例
兼容的设备
|
list、reconcile、rollup、dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
久坐不动时段
dataType:
sedentary-periodfilter parameter: sedentary_period
记录类型: 间隔
兼容的设备
|
list、reconcile、rollup、dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
睡眠
dataType:
sleepfilter parameter: sleep
记录类型: 会话
兼容的设备
|
list、get、reconcile、create、update、batchDelete | .sleep.readonly.sleep.writeonly |
|
步骤
dataType:
stepsfilter parameter: steps
记录类型: 间隔
存储分辨率: 1 分钟
兼容的设备
|
list、reconcile、rollup、dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
游泳距离数据
dataType:
swim-lengths-datafilter parameter: swim_lengths_data
记录类型: 间隔
兼容的设备
|
list、reconcile、rollup、dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
症状
|
create、update、batchDelete | .logged_symptoms.writeonly |
|
各心率区间时长
|
list、reconcile、rollup、dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
总卡路里数
dataType:
total-caloriesfilter parameter: total_calories
记录类型: 间隔
存储分辨率: 1 分钟
兼容的设备
|
汇总,dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
最大摄氧量
dataType:
vo2-maxfilter parameter: vo2_max
记录类型: 示例
兼容的设备
|
list、reconcile | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
Weight
|
list、get、reconcile、rollup、dailyRollup、create、update、batchDelete | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
查询限制
通过 API 查询数据点、汇总数据或每日汇总数据时,请注意以下限制:
- 过滤条件要求:某些只读的派生数据类型(例如
total-calories)需要使用过滤条件指定时间间隔开始时间(使用实际时间或民用时间)。 - 查询范围限制:汇总和每日汇总聚合端点会根据数据类型强制执行查询范围上限:
calories-in-heart-rate-zone、heart-rate、active-minutes和total-calories的最长查询范围为 14 天。- 所有其他数据类型的查询范围上限为 90 天。
- 汇总窗口大小:调用
rollUp端点时,windowSize时长必须至少为 1 秒 ("1s")。如果时长不足 1 秒,系统会返回INVALID_ARGUMENT。此外,请选择一个windowSize,使其等于或大于数据类型的底层存储分辨率(例如,对于 1 分钟间隔的数据类型(如steps和distance),请选择"60s"),以避免子区间分布不均匀。如需了解详情,请参阅汇总窗口大小和底层存储分辨率。
每日数据类型与间隔数据类型
对于某些生理指标(例如心率变异性 [HRV] 或血氧饱和度 [SpO2]),Google 健康数据 API 提供了两种不同的数据类型:每日版本和区间版本。了解二者之间的区别是为您的使用场景选择合适指标的关键:
每日:一整天的单个预汇总摘要。使用此功能可查看高级别趋势和每日信息中心,从而节省处理资源。
间隔:全天以精细的高分辨率进行的测量。此选项可用于绘制日内波动图表或执行深入的每小时分析。
数据可用性
只有在用户同步其活动跟踪器或手动将新数据输入到 Fitbit 移动应用或 Web 应用后,才能更新用户的数据。当 Fitbit 应用在移动设备上处于打开状态,并且 Fitbit 设备和移动应用之间有有效的数据连接且在蓝牙范围内时,Fitbit 设备和 Fitbit 移动应用可以每 15 分钟自动同步一次。如果用户使用 MobileTrack 追踪活动,只要应用处于打开状态,MobileTrack 就会每小时同步一次。
查询历史数据
Google Health API 的核心优势之一是能够长时间跟踪用户的表现并监控其健康生命体征。您可以查询用户自数据记录以来至今的所有数据;该 API 对应用可使用的历史数据量没有任何限制。
不过,查询历史数据仍受标准速率限制的约束。为了管理系统稳定性和防止过多的载荷,Google Health API 使用自动分页功能,并为每个端点指定了特定的页面大小。请注意以下边界和行为:
- 自动分页:如果您查询的数据时间跨度较长,API 将仅返回第一页结果(最多为相应端点的页面大小上限),并附带
nextPageToken。您必须使用nextPageToken来请求后续页面。 - 可变页面大小:上限取决于端点和数据类型。对于大多数数据类型,页面大小上限为 10,000。
不过,对于某些数据类型(例如
exercise和sleep),默认和最大页面大小上限为 25。例如,如果客户端请求过去 10 年的所有睡眠数据,API 仍只会返回第一页上的 25 个睡眠会话。 - 汇总日期范围限制:对于数据汇总和聚合端点(例如
rollUp和dailyRollUp),查询日期范围会根据数据类型受到限制:calories-in-heart-rate-zone、heart-rate、active-minutes和total-calories的最大范围为 14 天。- 所有其他汇总数据类型的最长范围为 90 天。
根据应用所需的历史数据量,检索整个数据集需要按顺序翻阅各个页面。在设计应用的数据同步流程时,请谨记这一点。
为确保最佳性能并避免 API 错误,请在查询历史数据时遵循以下准则:
分阶段数据同步(热加载与冷加载)
- 初始“热”加载:在主要加载序列期间,仅提取并呈现最近 7-14 天的数据。这样可确保用户立即看到数据,而无需等待长时间运行的查询。
- 后台“冷”加载:在主要界面呈现后,将较旧的历史数据检索委托给异步的低优先级队列或后台进程。
针对聚合的查询分块
- 由于汇总和每日汇总端点强制执行最长日期范围限制(14 天或 90 天,具体取决于数据类型),您必须将大型历史汇总查询分解为较小的连续时间间隔,以符合这些限制。
- 安全地批量处理或按顺序处理这些子查询,以遵守并发限制并保持稳定的界面进度指示器。
利用预汇总的汇总数据
重构概览信息中心和趋势图表,以使用预先汇总的摘要端点(例如 DailyRollUpDataPoints)。这将大幅减少后端计算开销和客户端网络传输时间。
弹性错误处理(智能重试)
- 遇到速率限制 (
429 Too Many Requests) 和服务器网关超时 (504 Gateway Timeout) 时,请实现严格的指数退避算法处理。切勿立即重试失败的大型载荷。即时重试会加剧后端拥塞,并导致系统性能下降。
第三方访问权限
Fitbit 设备无法直接与第三方应用或服务通信。这些设备旨在专门与 Fitbit 移动应用通信和同步。
当 Fitbit 应用处于打开状态时,设备会全天自动同步数据;如果蓝牙处于活动状态且应用在后台运行,设备则会每隔 15 分钟自动同步一次数据。此同步过程完成后,第三方服务即可通过 Google Health API 获取相应数据。
距离标准
锻炼距离(例如 elevationGainMillimeters)以毫米为标准单位进行测量,原因如下:
- 保持数据精度:使用毫米的最重要原因是确保我们读取和提供的数据不会丢失任何精度。使用毫米等精细单位可以让我们以高精度表示测量值。
- 标准化:毫米是我们各项服务中设计的标准化单位。这种一致性有助于确保与 API 的不同部分互动的开发者获得一致的体验。
- 广泛的测量系统支持:使用毫米等基本单位可让开发者轻松转换为任何其他所选单位,无论他们使用的是公制、英制还是其他测量系统。
可变的白昼时长
健康 API 的时间处理功能会优先考虑用户的时间,以应对夏令时或旅行导致的一天时长变化。每个数据点都存储了物理 UTC 时间戳和事件发生时有效的 UTC 偏移量。这样一来,系统便可以:
- 将事件映射到精确的物理瞬间。
- 将时间更正为用户的本地情境,以便进行汇总。
夏令时
在夏令时开始时,时间会“回拨”1 小时,从而形成 25 小时的民用日,相应日期的汇总数据将包含 25 小时的数据。“调快”会导致民用日为 23 小时,时间会调回标准时间。
旅游
跨时区旅行可能会导致单个民用日的实际时长出现更显著的变化。
使用 dailyRollUp 端点来协调时区差异。它会根据用户的本地时间自动将数据归因于记录数据时的日历日期,从而有效地“缝合”日期,即使时区发生变化也是如此。