É possível adicionar dados de nutrição 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 de nutrição de alguém que comeu uma banana.
Crie uma fonte 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 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 foi criada, você vai receber um 200 OK HTTP
código de status da resposta. O corpo da resposta contém uma representação JSON da fonte de dados, incluindo uma propriedade datasource.dataStreamId. Use esse 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 dados de nutrição 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 de nutrição usando a fonte de dados NutritionSource. Os valores do 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 foi criado, você vai receber um 200 OK HTTP
código de status da resposta. O corpo da resposta contém uma representação JSON do 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