É possível adicionar dados nutricionais ao Google Fit criando uma fonte de dados e usando
o tipo de dados com.google.nutrition
. Cada ponto de dados representa o valor
de todos os nutrientes consumidos em uma refeição ou lanche. Este exemplo mostra como adicionar
dados nutricionais de alguém que comeu uma banana.
Crie uma origem de dados
Android
Use DataSource.Builder
para criar uma nova fonte de dados. Por exemplo, nutritionSource
.
val nutritionSource = DataSource.Builder()
.setDataType(DataType.TYPE_NUTRITION)
// ...
.build()
REST
Chame a API REST para criar uma fonte de dados. Por exemplo, NutritionSource
.
Método HTTP
POST
Request URL
https://www.googleapis.com/fitness/v1/users/me/dataSources
Corpo da solicitação
{
"dataStreamName": "NutritionSource",
"type": "raw",
"application": {
"detailsUrl": "http://example.com",
"name": "My Example App",
"version": "1"
},
"dataType": {
"name": "com.google.nutrition",
}
}
Resposta
Se a fonte de dados tiver sido criada corretamente, você vai receber uma solicitação HTTP 200 OK
código de status da resposta. O corpo da resposta contém uma representação JSON
a fonte de dados, incluindo uma propriedade datasource.dataStreamId
. Usar este ID
como dataSourceId
para adicionar dados.
Comando 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
Adicionar dados de nutrição
Android
Este exemplo mostra como criar um novo ponto de dados e adicionar informações nutricionais
dados de uma banana, usando a fonte de dados 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
Este exemplo mostra como adicionar um conjunto de dados nutricionais usando o
NutritionSource
fonte de dados. Os valores para o tipo de dados de nutrição são
nutrientes (um mapa), tipo de refeição (4 = 'lanche') e o alimento real
(uma string).
Método HTTP
PATCH
Request URL
https://www.googleapis.com/fitness/v1/users/me/dataSources/datasource.dataStreamId/datasets/1574159699023000000-1574159699023999000
Corpo da solicitação
{ "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" } ] } ] }
Resposta
Se o ponto de dados tiver sido criado corretamente, você vai receber uma solicitação HTTP 200 OK
código de status da resposta. O corpo da resposta contém uma representação JSON
no conjunto de dados.
Comando 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