應用程式可以寫入 com.google.blood_glucose 資料類型,記錄血糖資料。在這個資料類型中,每個資料點都代表單一即時血糖讀數。資料點包含血糖濃度、與飲食和睡眠的時間關係,以及測量樣本來源的欄位。除了血糖濃度以外,其他欄位皆為選填。
- 血糖濃度的測量單位為 mmol/L (1 mmol/L 相當於 18 mg/dL)。
- 如果指定了值,與餐點的時間關係必須是
FIELD_TEMPORAL_RELATION_TO_MEAL中列出的其中一個值。 - 餐點類型必須是
FIELD_MEAL_TYPE中列出的其中一個值。 如果不知道餐點類型,請使用MEAL_TYPE_UNKNOWN。 - 如果指定了睡眠時間關係,則必須使用
FIELD_TEMPORAL_RELATION_TO_SLEEP中列出的其中一個值。 - 如果指定,血糖檢體來源必須是
FIELD_BLOOD_GLUCOSE_SPECIMEN_SOURCE中列出的其中一個值。
建立資料來源
Android
如要寫入血糖資料點,請建立新的 DataSource
TYPE_BLOOD_GLUCOSE,如以下範例所示:
val bloodGlucoseSource = DataSource.Builder()
.setDataType(TYPE_BLOOD_GLUCOSE)
// ...
.build()
REST
如要寫入血糖資料點,請建立新的資料來源。
HTTP 方法
POST
要求網址
https://www.googleapis.com/fitness/v1/users/me/dataSources
要求主體
{
"dataStreamName": "BloodGlucose",
"type": "raw",
"application": {
"detailsUrl": "http://example.com",
"name": "My Example App",
"version": "1"
},
"dataType": {
"name": "com.google.blood_glucose"
}
}
回應
如果資料來源建立成功,回應會是 200 OK 狀態碼。回應主體包含資料來源的 JSON 表示法,包括可用於後續要求的 datasource.dataStreamId 屬性 (資料來源 ID)。
CURL 指令
$ curl --header "Authorization: Bearer ya29.yourtokenvalue --request POST \ --header "Content-Type: application/json;encoding=utf-8" --data @blood-glucose-ds.json \ https://www.googleapis.com/fitness/v1/users/me/dataSources
新增資料
Android
如要將資料新增至上述建立的來源,請為這個資料來源建立資料點,並使用 History API 插入:
val bloodGlucose = DataPoint.builder(bloodGlucoseSource)
.setTimestamp(timestamp, TimeUnit.MILLISECONDS)
.setField(FIELD_BLOOD_GLUCOSE_LEVEL, 5.0f) // 90 mg/dL
.setField(FIELD_TEMPORAL_RELATION_TO_MEAL, FIELD_TEMPORAL_RELATION_TO_MEAL_BEFORE_MEAL)
.setField(FIELD_MEAL_TYPE, MEAL_TYPE_BREAKFAST)
.setField(FIELD_TEMPORAL_RELATION_TO_SLEEP, TEMPORAL_RELATION_TO_SLEEP_ON_WAKING)
.setField(FIELD_BLOOD_GLUCOSE_SPECIMEN_SOURCE, BLOOD_GLUCOSE_SPECIMEN_SOURCE_CAPILLARY_BLOOD)
.build()
REST
這個範例說明如何使用上述建立的資料來源新增血糖資料。
HTTP 方法
PATCH
要求網址
https://www.googleapis.com/fitness/v1/users/me/dataSources/datasource.dataStreamId/datasets/1574159699023000000-1574159699023000000
要求主體
為求明確,下方顯示的 JSON 主體已加上註解,說明如何使用健康狀態欄位常數。雖然目前 Fit API 會捨棄註解,但強烈建議您從程式碼中移除這些註解,因為 JSON 並未正式支援註解。
{
"minStartTimeNs": 1574159699023000000,
"maxEndTimeNs": 1574159699023000000,
"dataSourceId": "datasource.dataStreamId",
"point": [
{
"startTimeNanos": 1574159699023000000,
"endTimeNanos": 1574159699023000000,
"dataTypeName": "com.google.blood_glucose",
"value": [
{
// Blood glucose level, 90 mg/dL
"fpVal": 5.0
},
{
// FIELD_TEMPORAL_RELATION_TO_MEAL_BEFORE_MEAL
"intVal": 3
},
{
// MEAL_TYPE_BREAKFAST
"intVal": 1
},
{
// TEMPORAL_RELATION_TO_SLEEP_ON_WAKING
"intVal": 3
},
{
// BLOOD_GLUCOSE_SPECIMEN_SOURCE_CAPILLARY_BLOOD
"intVal": 2
}
]
}
]
}回應
如果成功新增血糖資料,回應會是 200 OK 狀態碼。回覆內容包含新增的血糖資料 JSON 表示法。
CURL 指令
$ curl --header "Authorization: Bearer ya29.yourtokenvalue --request PATCH \
--header "Content-Type: application/json;encoding=utf-8" --data @blood-glucose-data.json \
https://www.googleapis.com/fitness/v1/users/me/dataSources/datasource.dataStreamId/datasets/1574159699023000000-1574159699023000000