services healthkit google fit google-api google-fit

google api - healthkit - ¿Cómo recupero los datos de recuento de pasos de la API REST de Google Fitness?



healthkit android (3)

Resulta que la respuesta está en los documentos después de todo. Aquí está el formato de la solicitud.

GET https://www.googleapis.com/fitness/v1/users/{userId}/dataSources/{dataSourceId}/datasets/{datasetId}

El único valor admitido de {userId} es me (con autenticación).

Los valores posibles para {dataSourceId} están disponibles ejecutando una solicitud diferente .

Lo poco que extrañé fue que {datasetId} no es realmente una identificación, pero en realidad define el tiempo en el que está interesado. El formato para esa variable es {startTime}-{endTime} donde los tiempos están en nanosegundos desde la época.

Desde que instalé la aplicación Google Fit en mi Nexus 5, he estado rastreando mi conteo de pasos y el tiempo que paso caminando. Me gustaría recuperar esta información a través de la API REST de Google Fitness ( documentos ), pero no puedo encontrar la forma de obtener ninguno de esos datos de la API REST.

He utilizado el área de juegos OAuth 2.0 para enumerar con éxito las fuentes de datos, pero ninguno de los ejemplos que he intentado me ha devuelto ningún dato de actividad física. Siento que necesito usar algo similar a una DataReadRequest del ( SDK de Android ) pero no estoy compilando una aplicación de Android. Solo quiero acceder a los datos de estado físico ya almacenados en la aplicación Google Fit.

¿Es posible obtener la información recopilada por la aplicación Google Fit? De ser así, ¿cómo puedo leer y agregar datos de recuento de pasos usando la API REST?


Pude hacer que esto funcionara yendo a través del cliente de google php y noté que añaden sus horas de inicio y finalización para la solicitud GET con 0 extra: nueve de hecho.

Use el mismo formato de solicitud GET que se menciona en la respuesta anterior:

https://www.googleapis.com/fitness/v1/users/{userId}/dataSources/{dataSourceId}/datasets/{datasetId}

Ahora aquí hay un ejemplo con la marca de tiempo de unix (la función de time() de php lo usa)

https://www.googleapis.com/fitness/v1/users/me/dataSources/derived:com.google.step_count.delta:com.google.android.gms:estimated_steps/datasets/1470475368-1471080168

Esta es la respuesta que recibo:

{ "minStartTimeNs": "1470475368", "maxEndTimeNs": "1471080168", "dataSourceId": "derived:com.google.step_count.delta:com.google.android.gms:estimated_steps }

Sin embargo, si agrega las horas de inicio y finalización con nueve 0 que coloca en sus solicitudes GET y da forma a su solicitud de esta manera:

https://www.googleapis.com/fitness/v1/users/me/dataSources/derived:com.google.step_count.delta:com.google.android.gms:estimated_steps/datasets/1470475368000000000-1471080168000000000

Funcionó: esta es la respuesta que obtuve:

{ "minStartTimeNs": "1470475368000000000", "maxEndTimeNs": "1471080168000000000", "dataSourceId": "derived:com.google.step_count.delta:com.google.android.gms:estimated_steps", "point": [ { "modifiedTimeMillis": "1470804762704", "startTimeNanos": "1470801347560000000", "endTimeNanos": "1470801347567000000", "value": [ { "intVal": -3 } ], "dataTypeName": "com.google.step_count.delta", "originDataSourceId": "raw:com.google.step_count.delta:com.dsi.ant.plugins.antplus:AntPlus.0.124" },

La respuesta es mucho más larga, pero la trunqué por el bien de esta publicación. Entonces al pasar su parámetro de datasets a la solicitud:

1470475368-1471080168 no funcionará, pero 1470475368000000000-1471080168000000000 hará.

¡Esto me sirvió, espero que ayude a alguien!


Probé el método de publicación con la siguiente URL y cuerpo. Esto funcionará, por favor revisa los comentarios en línea también.

Usar URL: https://www.googleapis.com/fitness/v1/users/me/dataset:aggregate Método: POST cuerpo:

{ "aggregateBy": [{ "dataTypeName": "com.google.step_count.delta", "dataSourceId": "derived:com.google.step_count.delta:com.google.android.gms:estimated_steps" }], "bucketByTime": { "durationMillis": 86400000 }, // This is 24 hours "startTimeMillis": 1504137600000, //start time "endTimeMillis": 1504310400000 // End Time }