数据类型

Google 健身在 com.google 命名空间下提供了一组健康和健身数据类型。

数据类型用于定义数据点内值的格式。数据点可以表示:

  • 瞬时读数或观测结果
  • 一种在时间间隔内包含统计信息的汇总

Google 健身定义了瞬时观测数据类型和汇总数据类型。数据点包含数据类型字段的值和时间戳信息。表示瞬时观测的点包含时间戳,而表示汇总数据类型的点还包含相应时间区间的开始时间。

Google 健身还允许您定义新的数据类型。

数据类型组

Google 健身具有以下数据类型:

公开数据类型
平台提供的标准数据类型具有“com.google”前缀。例如,com.google.step_count.delta。这些数据类型可捕获健康和健身数据的即时读数,包括健身活动、睡眠和营养。任何应用都可以请求相关权限来读取和写入这些数据类型,但有少数地理位置数据类型只能由写入它们的应用读取。

有关详情,请参阅:

健康数据类型
平台提供的因可能包含敏感数据而受到访问限制的数据类型。如需了解详情,请参阅健康数据类型
汇总数据类型
用于读取按时间或活动类型汇总的健康和健身信息的数据类型。如需了解详情,请参阅汇总数据类型
私有自定义数据类型
由特定应用定义的自定义数据类型。只有定义该数据类型的应用才能读取和写入此类数据。如需了解详情,请参阅自定义数据类型

使用数据类型

Android

在 Android 上,数据类型定义为 DataType 类的公共字段。您可以通过多种方式使用数据类型调用 Fitness API,具体取决于您要实现的目标:

  • 如需记录数据,请使用 Recording API 为要记录的每种数据类型创建订阅。
  • 如需读取数据,请使用 History API 为每种数据类型提交读取请求。
  • 如需插入过去的历史数据,请使用 History API 为每种数据类型提交插入请求。
  • 如需创建会话,请使用 Sessions API 插入或记录包含会话元数据的数据。

如需为瞬时 DataType 对象创建数据点,请分配格式正确的值。以下示例展示了如何将食物项分配为字符串、将餐点类型分配为 Field 类中的常量,以及将营养成分分配为映射的浮点值。

val nutritionSource = DataSource.Builder()
    .setDataType(DataType.TYPE_NUTRITION)
    ...
    .build()

val nutrients = mapOf(
    Field.NUTRIENT_TOTAL_FAT to 0.4f,
    Field.NUTRIENT_SODIUM to 1f,
    Field.NUTRIENT_POTASSIUM to 422f
)
val banana = DataPoint.builder(nutritionSource)
    .setTimestamp(now, TimeUnit.MILLISECONDS)
    .setField(Field.FIELD_FOOD_ITEM, "banana")
    .setField(Field.FIELD_MEAL_TYPE, Field.MEAL_TYPE_SNACK)
    .setField(Field.FIELD_NUTRIENTS, nutrients)
    .build()

在应用中设置数据点后,您可以使用 History API 插入、读取或删除历史数据。

REST

dataSources 资源包含每个数据源的数据类型(及其字段列表)。您可以在创建数据源时指定这些数据类型之一,并且可以在从健身数据存储区检索数据源时获取数据类型的名称及其字段列表。

例如,数据源表示形式会按如下方式指定其数据类型:

{
"dataStreamId": "exampleDataSourceId",
...
"dataType": {
  "name": "com.google.step_count.delta"
},
...
}

授权范围

授权范围涵盖用户可授权应用访问的数据类型组。它们可帮助用户了解应用想要访问哪些类型的数据。 此外,用户无需批准每种单独的数据类型,即可更轻松地向应用授予使用相应数据的权限。用户在下载您的应用后授予这些权限。

OAuth 范围权限请求页面示例
图 2.OAuth 范围权限请求页面。

在少量用户测试完应用后,您需要在发布应用之前,根据与这些数据类型相关的范围申请验证。请仔细阅读上面链接的数据类型页面,了解哪些范围适用于每种数据类型。

例如,如果您的应用需要读取和写入血压数据,则需要声明它同时执行读取和写入操作,并请求这两个范围。如果只是将血压数据写入 Google 健身平台,则只需请求写入范围。

负责任地选择数据类型。请勿在应用可能需要时才请求每种数据类型。指定的类型决定了系统会提示用户授予哪些范围的权限。仅请求应用所需的数据类型,这样用户更愿意授予访问权限。用户更乐意向描述清晰的有限范围授予访问权限。

您可以使用下表来检查您的应用需要访问的范围是否属于敏感或受限范围(这决定了您需要遵循的验证步骤):

范围 说明 类别
https://www.googleapis.com/auth/fitness.activity.read 从 Google 健身平台读取活动数据。 受限
https://www.googleapis.com/auth/fitness.activity.write 将活动数据写入 Google 健身平台 受限
https://www.googleapis.com/auth/fitness.blood_glucose.read 从 Google 健身平台读取血糖数据。 受限
https://www.googleapis.com/auth/fitness.blood_glucose.write 将血糖数据写入 Google 健身平台。 受限
https://www.googleapis.com/auth/fitness.blood_pressure.read 从 Google 健身平台读取血压数据。 受限
https://www.googleapis.com/auth/fitness.blood_pressure.write 将血压数据写入 Google 健身平台。 受限
https://www.googleapis.com/auth/fitness.body.read 从 Google 健身平台读取身体测量数据(身高、体重、体脂率)。 受限
https://www.googleapis.com/auth/fitness.body.write 将身体测量数据写入 Google 健身平台。 受限
https://www.googleapis.com/auth/fitness.body_temperature.read 从 Google 健身平台读取体温数据。 受限
https://www.googleapis.com/auth/fitness.body_temperature.write 将体温数据写入 Google 健身平台。 受限
https://www.googleapis.com/auth/fitness.heart_rate.read 从 Google 健身平台读取心率数据。 受限
https://www.googleapis.com/auth/fitness.heart_rate.write 将心率数据写入 Google 健身平台。 受限
https://www.googleapis.com/auth/fitness.location.read 从 Google 健身平台读取位置数据。 受限
https://www.googleapis.com/auth/fitness.location.write 将位置数据写入 Google 健身平台。 受限
https://www.googleapis.com/auth/fitness.nutrition.read 从 Google 健身平台读取营养数据。 受限
https://www.googleapis.com/auth/fitness.nutrition.write 将营养数据写入 Google 健身平台。 受限
https://www.googleapis.com/auth/fitness.oxygen_saturation.read 从 Google 健身平台读取血氧饱和度数据。 受限
https://www.googleapis.com/auth/fitness.oxygen_saturation.write 将血氧饱和度数据写入 Google Fit 平台。 受限
https://www.googleapis.com/auth/fitness.reproductive_health.read 从 Google 健身平台读取生殖健康数据。 受限
https://www.googleapis.com/auth/fitness.reproductive_health.write 将生殖健康数据写入 Google 健身平台。 受限
https://www.googleapis.com/auth/fitness.sleep.read 从 Google 健身平台读取睡眠数据。 受限
https://www.googleapis.com/auth/fitness.sleep.write 将睡眠数据写入 Google 健身平台。 受限

向现有应用添加新范围

当您更新应用以请求新的使用范围时(例如,如果您添加了新的睡眠或心率使用范围,或者添加了读取使用范围),系统会提示用户您的应用正在请求访问这些使用范围,用户可以选择授予或拒绝访问权限。

最佳实践是在需要资源时向用户请求授权。请遵循有关请求增量授权的指南。

如果用户了解您的应用为何/如何使用这些数据,则更有可能授予访问权限:

  • 考虑添加一个屏幕,用于警告/告知用户系统将要求他们授予这些范围。
  • 请明确说明您的应用为何请求访问这些范围/数据,以便用户在掌握充分信息的情况下做出决定。

详细了解 Android 应用权限方面的最佳实践