É 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 uma pessoa que comeu uma banana.
Crie uma origem de dados
Android
Use o 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 nova 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, você receberá um código de status da resposta HTTP
200 OK
. O corpo da resposta contém uma representação JSON da
fonte de dados, incluindo uma propriedade datasource.dataStreamId
. Use esse ID
como o dataSourceId
para adicionar dados.
ComandoCURL
$ 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 nutricionais
Android
Neste exemplo, mostramos como criar um novo ponto de dados e adicionar dados nutricionais para 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
Neste exemplo, mostramos como adicionar um conjunto de dados nutricionais usando a
fonte de dados NutritionSource
. Os valores dos tipos de dados nutricionais são os nutrientes (um mapa), o tipo de refeição (4 = 'snack') e o prato 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, você receberá um código de status da resposta HTTP
200 OK
. O corpo da resposta contém uma representação JSON do
conjunto de dados.
ComandoCURL
$ 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