Ce document explique comment enregistrer un entraînement à l'aide de l'API REST Fitness.
Étape 1: Configurer un projet
Vous devez configurer un projet dans la console Google APIs et activer l'accès à l'API REST Fitness, comme décrit dans la section Premiers pas.
Étape 2 : Authentifiez votre application
Votre application doit authentifier les requêtes adressées à Fitness API à l'aide d'un jeton d'accès. Pour obtenir le jeton d'accès, votre application inclut des identifiants spécifiques au client et un champ d'application, comme décrit dans la section Autoriser les requêtes.
Étape 3 : Créer une source de données
Une source de données représente une source de données de capteurs d'un type particulier. Toutes les données insérées dans le magasin de fitness doit être associé à une source de données. Vous pouvez créer des sources de données une fois et les réutiliser pour de futures sessions.
Pour créer une source de données, envoyez une requête HTTP authentifiée avec les paramètres suivants:
- Méthode HTTP
- POST
- Ressource
https://www.googleapis.com/fitness/v1/users/me/dataSources
L'ID utilisateur
me
fait référence à l'utilisateur dont le jeton d'accès autorise la requête.- Corps de la requête
{ "name": "example-fit-heart-rate", "dataStreamId": "raw:com.google.heart_rate.bpm:1234567890:Example Fit:example-fit-hrm-1:123456", "dataType": { "field": [{ "name": "bpm", "format": "floatPoint" }], "name": "com.google.heart_rate.bpm" }, "application": { "packageName": "com.example.fit.someapp", "version": "1.0" }, "device": { "model": "example-fit-hrm-1", "version": "1", "type": "watch", "uid": "123456", "manufacturer":"Example Fit" }, "type": "raw" }
Cette requête crée une source de données représentant un moniteur de fréquence cardiaque qui fournit des données de fitness de type com.google.heart_rate.bpm
. Vous devez spécifier l'ID de la source de données.
peut être n'importe quelle valeur. L'ID de la source de données dans cet exemple suit une convention d'attribution de noms raisonnable que vous pouvez adopter. Le composant "Device" (Appareil) est facultatif si les données ne sont générées que par une application.
Si la requête aboutit, la réponse est un code d'état 200 OK
.
Pour en savoir plus sur les sources de données, consultez la documentation de référence de l'API pour la ressource Users.dataSources
.
Étape 4 : Ajoutez des points de données
Vous utilisez des ensembles de données pour insérer des points de données dans le magasin de remise en forme. Un jeu de données est un ensemble de données des points d'une source unique limitée par le temps.
Pour créer un ensemble de données et y ajouter des points, envoyez une requête HTTP authentifiée avec ces paramètres:
- Méthode HTTP
- RÉCOMPENSE
- Ressource
https://www.googleapis.com/fitness/v1/users/me/dataSources/
raw:com.google.heart_rate.bpm:1234567890:Example%20Fit:example-fit-hrm-1:123456/datasets/1411053997000000000-1411057556000000000L'URL inclut l'ID de la source de données, ainsi que les heures de début et de fin de l'ensemble de données en nanosecondes.
- Corps de la requête
{ "minStartTimeNs": 1411053997000000000, "maxEndTimeNs": 1411057556000000000, "dataSourceId": "raw:com.google.heart_rate.bpm:1234567890:Example Fit:example-fit-hrm-1:123456", "point": [ { "startTimeNanos": 1411053997000000000, "endTimeNanos": 1411053997000000000, "dataTypeName": "com.google.heart_rate.bpm", "value": [ { "fpVal": 78.8 } ] }, { "startTimeNanos": 1411055000000000000, "endTimeNanos": 1411055000000000000, "dataTypeName": "com.google.heart_rate.bpm", "value": [ { "fpVal": 89.1 } ] }, { "startTimeNanos": 1411057556000000000, "endTimeNanos": 1411057556000000000, "dataTypeName": "com.google.heart_rate.bpm", "value": [ { "fpVal": 62.45 } ] } ] }
Cette requête crée un ensemble de données avec trois points de données de fréquence cardiaque en une heure pour les données à l'étape précédente.
Si la requête aboutit, la réponse est un code d'état 200 OK
.
Pour plus d'informations sur les ensembles de données, consultez la documentation de référence de l'API pour
Ressource Users.dataSources.datasets
.
Générer des codes temporels valides
Les codes temporels de l'exemple ci-dessus sont exprimés en nanosecondes. Pour générer des codes temporels valides, vous pouvez utiliser le script Python suivant :
from datetime import datetime, timedelta import calendar def date_to_nano(ts): """ Takes a datetime object and returns POSIX UTC in nanoseconds """ return calendar.timegm(ts.utctimetuple()) * int(1e9) if __name__ == '__main__': print 'Current time is %d' % date_to_nano(datetime.now()) print 'Time 1 hour ago was %d' % date_to_nano(datetime.now() + timedelta(hours=-1))
Étape 5 : Créez une session
Maintenant que vous avez inséré des données dans le fitness store, vous pouvez insérer une session pour fournir des métadonnées supplémentaires pour cet entraînement. Les sessions représentent un intervalle de temps pendant lequel les utilisateurs faire une activité physique.
Pour créer une session pour cet entraînement, envoyez une requête HTTP authentifiée avec les paramètres suivants:
- Méthode HTTP
- PUT
- Ressource
https://www.googleapis.com/fitness/v1/users/me/sessions/sessionId
Le sessionId est arbitraire et doit être unique pour toutes les sessions. associé à l'utilisateur authentifié.
- Corps de la requête
{ "id": "example-fit-1411053997", "name": "Example Fit Run on Sunday Afternoon", "description": "Example Fit Running Session", "startTimeMillis": 1411053997000, "endTimeMillis": 1411057556000, "application": { "name": "Foo Example App", "version": "1.0" }, "activityType": 8 }
Choisissez un nom de session intelligible et descriptif, car il peut être utilisé par d'autres applications. pour résumer la session. Les heures de début et de fin des sessions sont exprimées en millisecondes (et non en nanosecondes). Utilisez le même nom de package pour vos sessions et vos sources de données. cela fait la cohérence des données et s'assurer que l'attribution des données renverra vers votre application.
L'intervalle de temps spécifié dans cette session couvre les données de fréquence cardiaque insérées précédemment, donc Google Fit associe ces points de données à cette session.
Pour plus d'informations sur les sessions, consultez la documentation de référence de l'API pour la classe
Ressource Users.sessions
.
Étape 6: Créez des segments d'activité
Les segments d'activité vous permettent de représenter différentes activités au cours d'une session.
Un segment d'activité est un segment de temps qui couvre une seule activité. Par exemple, si un utilisateur se rend
pour une course d'une heure, vous pouvez créer un segment d'activité de type running
(8) pour
heure entière. Si l'utilisateur court pendant 25 minutes, fait une pause de 5 minutes, puis court 50 % de plus.
heure, vous pouvez créer trois segments d'activité consécutifs de type running
,
unknown
et running
respectivement.
Créer un segment d'activité revient à ajouter tout autre point de données. Pour créer une activité créez d'abord une source de données pour un segment d'activité, puis créez un ensemble de données et ajoutez les données du segment d’activité pointent vers lui.
L'exemple suivant crée trois segments (en cours d'exécution, au repos et en cours d'exécution) dans les mêmes laps de temps. que les relevés de fréquence cardiaque, en supposant que vous avez déjà créé un segment d'activité source de données dont l'ID est "raw:com.google.activity.segment:1234567890:Example Fit:example-fit-hrm-1:123456":
- Méthode HTTP
- RÉCOMPENSE
- Ressource
https://www.googleapis.com/fitness/v1/users/me/dataSources/
raw:com.google.activity.segment:1234567890/datasets/1411053997000000000-1411057556000000000- Corps de la requête
{ "minStartTimeNs": 1411053997000000000, "maxEndTimeNs": 1411057556000000000, "dataSourceId": "raw:com.google.activity.segment:1234567890", "point": [ { "startTimeNanos": 1411053997000000000, "endTimeNanos": 1411053997000000000, "dataTypeName": "com.google.activity.segment", "value": [ { "intVal": 8 } ] }, { "startTimeNanos": 1411055000000000000, "endTimeNanos": 1411055000000000000, "dataTypeName": "com.google.activity.segment", "value": [ { "intVal": 4 } ] }, { "startTimeNanos": 1411057556000000000, "endTimeNanos": 1411057556000000000, "dataTypeName": "com.google.activity.segment", "value": [ { "intVal": 8 } ] } ] }
Ces points de données de segment d'activité sont ajoutés à une source de données créée spécifiquement pour gérer les segments d'activité. Vous pouvez créer une source de données pour chaque ensemble de segments, mais vous devez en réutiliser une dédiée à un type de session particulier, comme la course à pied.
Les sessions spécifient un type d'activité, qui doit correspondre à l'activité globale de l'utilisateur. Même si un utilisateur fait une pause lorsqu'il court, l'entraînement global est toujours une course. En général, le type d'activité de la session correspondra au type de segment d'activité principal.
Utilisez le type d'activité inconnu (4) pour indiquer qu'un utilisateur est au repos. savoir ce que l'utilisateur est en train de faire: il peut être immobile, s'étirer, boire, etc. Si vous vous savez que l'utilisateur ne bouge pas, vous pouvez utiliser still (3).
Pour obtenir la liste détaillée des types d'activités, consultez Types d'activités.
Résumé
Dans ce tutoriel, vous avez créé des sources de données pour les types de données et les segments d'activité. Vous avez inséré des points de données dans le fitness store. Vous avez créé des segments d'activité pour représenter les différentes activités qui se déroulent pendant un entraînement. Vous avez également inséré une session qui couvre l'ensemble de l'entraînement.
Google Fit associe les données que vous avez insérées et toutes les autres données disponibles pour cet intervalle de temps à une session représentant l'entraînement de l'utilisateur.