Bạn có thể thêm dữ liệu dinh dưỡng vào Google Fit bằng cách tạo nguồn dữ liệu và sử dụng
loại dữ liệu com.google.nutrition
. Mỗi điểm dữ liệu đại diện cho giá trị
tất cả chất dinh dưỡng mà trẻ tiêu thụ trong một bữa ăn chính hoặc bữa ăn nhẹ. Ví dụ này minh hoạ cách thêm
dữ liệu dinh dưỡng của người ăn một quả chuối.
Tạo nguồn dữ liệu
Android
Sử dụng DataSource.Builder
để tạo nguồn dữ liệu mới. Ví dụ: nutritionSource
.
val nutritionSource = DataSource.Builder()
.setDataType(DataType.TYPE_NUTRITION)
// ...
.build()
Kiến trúc chuyển trạng thái đại diện (REST)
Hãy gọi API REST để tạo nguồn dữ liệu mới. Ví dụ: NutritionSource
.
Phương thức HTTP
POST
URL yêu cầu
https://www.googleapis.com/fitness/v1/users/me/dataSources
Nội dung yêu cầu
{
"dataStreamName": "NutritionSource",
"type": "raw",
"application": {
"detailsUrl": "http://example.com",
"name": "My Example App",
"version": "1"
},
"dataType": {
"name": "com.google.nutrition",
}
}
Đáp
Nếu tạo nguồn dữ liệu thành công, bạn sẽ nhận được một HTTP 200 OK
mã trạng thái phản hồi. Nội dung phản hồi chứa bản trình bày JSON của
nguồn dữ liệu, bao gồm cả tài sản datasource.dataStreamId
. Sử dụng mã này
dưới dạng dataSourceId
để thêm dữ liệu.
Lệnh CURL
$ curl --header "Authorization: Bearer ya29.yourtokenvalue --request POST \ --header "Content-Type: application/json;encoding=utf-8" --data @nutrition-ds.json \ https://www.googleapis.com/fitness/v1/users/me/dataSources
Thêm dữ liệu dinh dưỡng
Android
Ví dụ này minh hoạ cách tạo một điểm dữ liệu mới và bổ sung thông tin dinh dưỡng
dữ liệu về một quả chuối, bằng cách sử dụng nguồn dữ liệu nutritionSource
.
val nutrients = mapOf(
Field.NUTRIENT_TOTAL_FAT to 0.4f,
Field.NUTRIENT_SODIUM to 1f,
Field.NUTRIENT_SATURATED_FAT to 0.1f,
Field.NUTRIENT_PROTEIN to 1.3f,
Field.NUTRIENT_TOTAL_CARBS to 27.0f,
Field.NUTRIENT_CHOLESTEROL to 0.0f,
Field.NUTRIENT_CALORIES to 105.0f,
Field.NUTRIENT_SUGAR to 14.0f,
Field.NUTRIENT_DIETARY_FIBER to 3.1f,
Field.NUTRIENT_POTASSIUM to 422f
)
val banana = DataPoint.builder(nutritionSource)
.setTimestamp(timestamp, TimeUnit.MILLISECONDS)
.setField(Field.FIELD_FOOD_ITEM, "banana")
.setField(Field.FIELD_MEAL_TYPE, Field.MEAL_TYPE_SNACK)
.setField(Field.FIELD_NUTRIENTS, nutrients)
.build()
Kiến trúc chuyển trạng thái đại diện (REST)
Ví dụ này cho bạn biết cách thêm một bộ dữ liệu dinh dưỡng bằng cách sử dụng
NutritionSource
nguồn dữ liệu. Các giá trị cho loại dữ liệu dinh dưỡng là
chất dinh dưỡng (bản đồ), loại bữa ăn (4 = 'bữa ăn nhẹ') và món ăn trong thực tế
(một chuỗi).
Phương thức HTTP
PATCH
URL yêu cầu
https://www.googleapis.com/fitness/v1/users/me/dataSources/datasource.dataStreamId/datasets/1574159699023000000-1574159699023999000
Nội dung yêu cầu
{ "minStartTimeNs": 1574159699023000000, "maxEndTimeNs": 1574159699023999000, "dataSourceId": "datasource.dataStreamId", "point": [ { "startTimeNanos": 1574159699023000000, "endTimeNanos": 1574159699023999000, "dataTypeName": "com.google.nutrition", "value": [ { "mapVal": [ { "key": "fat.total", "value": { "fpVal": 0.4 } }, { "key": "sodium", "value": { "fpVal": 1.0 } }, { "key": "fat.saturated", "value": { "fpVal": 0.1 } }, { "key": "protein", "value": { "fpVal": 1.3 } }, { "key": "carbs.total", "value": { "fpVal": 27.0 } }, { "key": "cholesterol", "value": { "fpVal": 0.0 } }, { "key": "calories", "value": { "fpVal": 105.0 } }, { "key": "sugar", "value": { "fpVal": 14.0 } }, { "key": "dietary_fiber", "value": { "fpVal": 3.1 } }, { "key": "potassium", "value": { "fpVal": 422.0 } } ] }, { "intVal": 4 }, { "strVal": "banana" } ] } ] }
Đáp
Nếu điểm dữ liệu được tạo thành công, bạn sẽ nhận được một HTTP 200 OK
mã trạng thái phản hồi. Nội dung phản hồi chứa bản trình bày JSON của
tập dữ liệu.
Lệnh CURL
$ curl --header "Authorization: Bearer ya29.yourtokenvalue --request PATCH \ --header "Content-Type: application/json;encoding=utf-8" --data @nutrition-data.json \ https://www.googleapis.com/fitness/v1/users/me/dataSources/datasource.dataStreamId/datasets/1574159699023000000-1574159699023999000