Puoi aggiungere dati nutrizionali a Google Fit creando un'origine dati e utilizzando il tipo di dati com.google.nutrition
. Ogni punto dati rappresenta il valore
di tutti i nutrienti consumati in un pasto o in uno snack. Questo esempio mostra come aggiungere dati nutrizionali per qualcuno che ha mangiato una banana.
Creare un'origine dati
Android
Utilizza DataSource.Builder
per creare una nuova origine dati. Ad esempio, nutritionSource
.
val nutritionSource = DataSource.Builder()
.setDataType(DataType.TYPE_NUTRITION)
// ...
.build()
REST
Chiama l'API REST per creare una nuova origine dati. Ad esempio, NutritionSource
.
Metodo HTTP
POST
URL di richiesta
https://www.googleapis.com/fitness/v1/users/me/dataSources
Corpo della richiesta
{
"dataStreamName": "NutritionSource",
"type": "raw",
"application": {
"detailsUrl": "http://example.com",
"name": "My Example App",
"version": "1"
},
"dataType": {
"name": "com.google.nutrition",
}
}
Risposta
Se l'origine dati è stata creata correttamente, riceverai un codice di stato HTTP di risposta 200 OK
. Il corpo della risposta contiene una rappresentazione JSON dell'origine dati, inclusa una proprietà datasource.dataStreamId
. Utilizza questo ID
come dataSourceId
per aggiungere dati.
Comando CNAME
$ 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
Aggiungere dati nutrizionali
Android
Questo esempio mostra come creare un nuovo punto dati e aggiungere dati nutrizionali per una banana, utilizzando l'origine dati 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()
REST
Questo esempio mostra come aggiungere un set di dati di alimentazione utilizzando l'origine dati NutritionSource
. I valori per il tipo di dati nutrizionali sono
nutrienti (una mappa), tipo di pasto (4 = 'spuntino') e il prodotto alimentare effettivo
(una stringa).
Metodo HTTP
PATCH
URL di richiesta
https://www.googleapis.com/fitness/v1/users/me/dataSources/datasource.dataStreamId/datasets/1574159699023000000-1574159699023999000
Corpo della richiesta
{ "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" } ] } ] }
Risposta
Se il punto dati è stato creato correttamente, riceverai un codice di stato HTTP di risposta 200 OK
. Il corpo della risposta contiene una rappresentazione JSON del set di dati.
Comando CNAME
$ 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