資料類型

Google Fit 會在 com.google 命名空間下方提供一組健康與保健資料類型,

資料類型會定義資料點內值的格式。資料點可以呈現:

  • 即時讀取或觀察結果
  • 一段時間內的統計資料匯總

Google Fit 會定義即時觀察的資料類型,以及用於匯總資料的資料類型。資料點由資料類型欄位的值和時間戳記資訊組成。即時觀測點包括時間戳記,匯總資料類型的點也會包括間隔的開始時間。

Google Fit 也可讓您定義新的資料類型。

資料類型群組

Google Fit 提供的資料類型如下:

公開資料類型
平台提供的標準資料類型含有「com.google」前置字元,例如 com.google.step_count.delta。這些資料類型會擷取健康與保健資料的即時讀數,包括健身活動、睡眠和營養資料。任何應用程式都可以要求相關權限,以讀取及寫入這些資料類型,但少數位置資料類型只能由寫入這些資料類型的應用程式讀取。

詳情請參閱:

健康資料類型
平台提供的資料類型,因可能有機密資料而限制存取權。詳情請參閱健康資料類型
匯總資料類型
可讀取依時間或活動類型匯總的健康與保健資訊的資料類型。詳情請參閱匯總資料類型
私人自訂資料類型
由特定應用程式定義的自訂資料類型。只有定義資料類型的應用程式才能讀取及寫入這個類型的資料。詳情請參閱自訂資料類型

使用資料類型

Android

在 Android 中,資料類型會定義為 DataType 類別的公開欄位。叫用健身 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 Fit 平台,則只需要要求寫入範圍。

以負責任的態度選擇資料類型。請勿要求所有資料類型,以因應應用程式可能需要的資料。指定的類型會決定系統會提示使用者授予哪些範圍的權限。只要求使用者提供應用程式需要的資料類型,讓使用者較有可能授予存取權。使用者可以透過較為清楚的方式,將存取權授予有限且已清楚說明的範圍。

請使用下表檢查應用程式需要存取的範圍是否為敏感或受限制 (視您要遵循的驗證步驟而定):

內容範圍 說明 類別
https://www.googleapis.com/auth/fitness.activity.read 讀取 Google Fit 平台的活動資料。 受限制
https://www.googleapis.com/auth/fitness.activity.write 將活動資料寫入 Google Fit 平台 受限制
https://www.googleapis.com/auth/fitness.blood_glucose.read 讀取 Google Fit 平台中的血糖資料。 受限制
https://www.googleapis.com/auth/fitness.blood_glucose.write 將血糖資料寫入 Google Fit 平台。 受限制
https://www.googleapis.com/auth/fitness.blood_pressure.read 讀取 Google Fit 平台的血壓資料。 受限制
https://www.googleapis.com/auth/fitness.blood_pressure.write 將血壓資料寫入 Google Fit 平台。 受限制
https://www.googleapis.com/auth/fitness.body.read 從 Google Fit 平台讀取身體測量資料 (身高、體重、體脂肪百分比)。 受限制
https://www.googleapis.com/auth/fitness.body.write 將身體測量資料寫入 Google Fit 平台。 受限制
https://www.googleapis.com/auth/fitness.body_temperature.read 讀取 Google Fit 平台中的體溫資料。 受限制
https://www.googleapis.com/auth/fitness.body_temperature.write 將體溫資料寫入 Google Fit 平台。 受限制
https://www.googleapis.com/auth/fitness.heart_rate.read 讀取 Google Fit 平台中的心率資料。 受限制
https://www.googleapis.com/auth/fitness.heart_rate.write 將心率資料寫入 Google Fit 平台。 受限制
https://www.googleapis.com/auth/fitness.location.read 從 Google Fit 平台讀取位置資料。 受限制
https://www.googleapis.com/auth/fitness.location.write 將位置資料寫入 Google Fit 平台。 受限制
https://www.googleapis.com/auth/fitness.nutrition.read 讀取 Google Fit 平台的營養資料。 受限制
https://www.googleapis.com/auth/fitness.nutrition.write 將營養資料寫入 Google Fit 平台。 受限制
https://www.googleapis.com/auth/fitness.oxygen_saturation.read 讀取 Google Fit 平台中的氧飽和度資料。 受限制
https://www.googleapis.com/auth/fitness.oxygen_saturation.write 將氧飽和度資料寫入 Google Fit 平台。 受限制
https://www.googleapis.com/auth/fitness.reproductive_health.read 讀取 Google Fit 平台上的生殖健康資料。 受限制
https://www.googleapis.com/auth/fitness.reproductive_health.write 將生殖健康資料寫入 Google Fit 平台。 受限制
https://www.googleapis.com/auth/fitness.sleep.read 從 Google Fit 平台讀取睡眠資料。 受限制
https://www.googleapis.com/auth/fitness.sleep.write 將睡眠資料寫入 Google Fit 平台。 受限制

在現有應用程式中新增範圍

當您更新應用程式以要求新的範圍 (例如,您新增睡眠/心率範圍,或新增讀取範圍) 時,系統會提示使用者應用程式要求存取這些範圍,而他們可以選擇授予或拒絕存取權。

最佳做法是在需要資源時要求使用者授權。請遵循要求漸進式授權的準則。

如果使用者瞭解應用程式使用這類資料的原因/方式,會更有可能授予存取權:

  • 建議您新增畫面,警告/告知使用者系統會要求他們提供這些範圍。
  • 清楚說明應用程式要求存取這些範圍/資料的原因,以便使用者做出明智決定。

進一步瞭解 Android 應用程式權限的最佳做法