Comment enregistrer un entraînement

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 au 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 d'accès, comme décrit dans la section Autoriser les requêtes.

Étape 3: Créez 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
PUBLIER
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 qui représente un moniteur de fréquence cardiaque fournissant des données de fitness. des données 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. Dans cet exemple, l'ID de la source de données suit une convention d'attribution de noms raisonnable que vous pouvez adopter. Le composant d'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 plus d'informations sur les sources de données, consultez la documentation de référence de l'API pour 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-1411057556000000000

L'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

Dans l'exemple ci-dessus, les codes temporels 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é les données dans le magasin de fitness, 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 lisible 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 en savoir plus sur les sessions, consultez la documentation de référence de l'API sur 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 concernant les segments d'activité sont ajoutés à une source de données qui a été 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, nous vous conseillons d'en réutiliser une dédiée à un type de session particulier, comme la course.

Les sessions spécifient un type d'activité qui doit correspondre à l'activité globale dans laquelle l'utilisateur est impliqué. 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 magasin de fitness ; vous avez créé des segments d'activité pour représenter les activités ayant lieu pendant une séance de sport ; et que vous avez inséré une session qui couvre l'intégralité séance de sport.

Google Fit associe les données que vous avez insérées et toutes les autres données disponibles pour cet intervalle de temps avec une session qui représente l'entraînement de l'utilisateur.