数据类型

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

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

  • 即时读取或观察
  • 包含一段时间内统计信息的汇总

Google 健身定义了用于即时观察的数据类型,以及用于汇总的数据类型 数据。数据点由数据类型字段的值和时间戳信息组成。 表示瞬时观察结果的点包括时间戳和 聚合数据类型还包括间隔的开始时间。

Google 健身还支持定义新的数据类型。

数据类型组

Google 健身包含以下数据类型:

公开数据类型
平台提供的标准数据类型带有“com.google”标记,前缀。例如,com.google.step_count.delta。这些类型的数据可捕获以下内容的即时读数: 健康和健身数据,包括健身活动、睡眠和营养。不限 应用可以请求相关权限以读取和写入这些数据类型 只有少数几个位置数据类型只能由 编写。

如需了解详情,请参阅:

健康数据类型
平台提供的因以下原因限制访问权限的数据类型 潜在的敏感数据。如需了解更多信息,请参阅健康数据 类型
汇总数据类型
用于读取按时间或 活动类型。有关详情,请参阅汇总数据 类型
不公开的自定义数据类型
由特定应用定义的自定义数据类型。只有定义 该数据类型可以读取和写入此类型的数据。如需了解详情,请参阅 自定义数据类型

使用数据类型

Android

在 Android 上,数据类型是指 DataType 类。使用数据类型调用 Fitness API 的方式取决于您要实现的目标:

  • 如需录制数据,请使用 Recording API 执行以下操作 为您要记录的每种数据类型创建订阅。
  • 如需读取数据,请使用 History API 提交 read 为每种数据类型分别发出自定义请求
  • 如需插入过去的历史数据,请使用 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()

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

REST

dataSources 资源包含数据类型 (及其字段列表)。在以下情况下,您可以指定其中一种数据类型 您可以创建数据源,还可以获取数据类型的名称及其字段列表 。

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

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

授权范围

授权范围涵盖用户可授权应用访问的数据类型组 访问权限。它们可以帮助用户了解应用想要访问哪些类型的数据。 这些设置还使得授予应用使用相应数据的权限变得更为简单, 来批准每种数据类型用户授予这些权限后 您下载了您的应用。

<ph type="x-smartling-placeholder">
</ph> 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 健身平台。 受限
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 应用权限方面的最佳实践