혈당 데이터 쓰기

앱에서 com.google.blood_glucose 데이터 유형에 써서 혈당 데이터를 기록할 수 있습니다. 이 데이터 유형에서 각 데이터 포인트는 단일 순간 혈당 측정값을 나타냅니다. 데이터 포인트에는 혈당 농도, 식사 및 수면 시간과의 관계, 측정된 표본의 소스 필드가 포함됩니다. 혈당 농도를 제외한 모든 필드는 선택사항입니다.

데이터 소스 만들기

Android

혈당 데이터 포인트를 쓰려면 다음 예와 같이 DataSourceTYPE_BLOOD_GLUCOSE를 만듭니다.

val bloodGlucoseSource = DataSource.Builder()
    .setDataType(TYPE_BLOOD_GLUCOSE)
    // ...
    .build()

REST

혈당 데이터 포인트를 쓰려면 새 데이터 소스를 만듭니다.

HTTP 메소드

POST

요청 URL

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 상태 코드입니다. 응답 본문에는 후속 요청의 데이터 소스 ID로 사용할 수 있는 datasource.dataStreamId 속성을 비롯하여 데이터 소스의 JSON 표현이 포함됩니다.

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

요청 URL

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