Come registrare un allenamento

Questo documento descrive come registrare un esercizio utilizzando l'API Fitness REST.

Passaggio 1: configura un progetto

Devi configurare un progetto nella console API di Google e attivare l'accesso all'API REST di fitness, come descritto nella Guida introduttiva.

Passaggio 2: autentica la tua app

La tua app deve autenticare le richieste all'API Fitness utilizzando un token di accesso. Per ottenere il token di accesso, l'app include credenziali specifiche del client e un ambito di accesso, come descritto nella sezione Autorizzazione delle richieste.

Passaggio 3: crea un'origine dati

Un'origine dati rappresenta un'origine dei dati dei sensori di un determinato tipo. Tutti i dati inseriti nel centro fitness devono essere associati a un'origine dati. Puoi creare le origini dati una sola volta e riutilizzarle per le sessioni future.

Per creare un'origine dati, invia una richiesta HTTP autenticata con i seguenti parametri:

Metodo HTTP
POST
Risorsa

https://www.googleapis.com/fitness/v1/users/me/dataSources

Lo User-ID me si riferisce all'utente il cui token di accesso autorizza la richiesta.

Corpo della richiesta
{
"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"
}

Questa richiesta crea un'origine dati che rappresenta un cardiofrequenzimetro che fornisce dati sull'attività fisica di tipo com.google.heart_rate.bpm. Devi specificare l'ID dell'origine dati e può essere un valore qualsiasi. L'ID origine dati in questo esempio segue una convenzione di denominazione ragionevole che puoi adottare. Il componente dispositivo è facoltativo se i dati vengono generati soltanto da un'app.

Se la richiesta ha esito positivo, la risposta è un codice di stato 200 OK.

Per scoprire di più sulle origini dati, consulta il riferimento API per la risorsa Users.dataSources.

Passaggio 4: aggiungi punti dati

Puoi utilizzare i set di dati per inserire punti dati nel centro fitness. Un set di dati è una raccolta di punti dati da una singola origine dati vincolata dal tempo.

Per creare un set di dati al quale aggiungere punti, invia una richiesta HTTP autenticata con i seguenti parametri:

Metodo HTTP
PATCH
Risorsa

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 include l'ID origine dati e le ore di inizio e fine del set di dati in nanosecondi.

Corpo della richiesta
{
"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
    }
  ]
}
]
}

Questa richiesta crea un set di dati con tre punti dati del battito cardiaco entro un'ora per l'origine dati nel passaggio precedente.

Se la richiesta ha esito positivo, la risposta è un codice di stato 200 OK.

Per ulteriori informazioni sui set di dati, consulta il riferimento API per la risorsa Users.dataSources.datasets.

Genera timestamp validi

I timestamp nell'esempio precedente sono in nanosecondi. Per generare timestamp validi, puoi utilizzare il seguente script Python:

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))

Passaggio 5: crea una sessione

Ora che hai inserito i dati nel centro fitness, puoi inserire una sessione per fornire metadati aggiuntivi per questo esercizio. Le sessioni rappresentano un intervallo di tempo durante il quale gli utenti svolgono un'attività di fitness.

Per creare una sessione per questo esercizio, invia una richiesta HTTP autenticata con questi parametri:

Metodo HTTP
PUT
Risorsa

https://www.googleapis.com/fitness/v1/users/me/sessions/sessionId

Il sessionId è arbitrario e deve essere univoco per tutte le sessioni associate all'utente autenticato.

Corpo della richiesta
{
"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
}

Scegli un nome di sessione leggibile e descrittivo, poiché può essere utilizzato da altre app per riassumere la sessione. Le ore di inizio e di fine delle sessioni sono in millisecondi (non nanosecondi). Utilizza lo stesso nome di pacchetto per le sessioni e le origini dati, in modo che i dati siano più coerenti e garantire che l'attribuzione dei dati rimandi alla tua app.

L'intervallo di tempo specificato in questa sessione copre i dati relativi alla frequenza cardiaca inseriti in precedenza, in modo che Google Fit associ tali punti dati a questa sessione.

Per ulteriori informazioni sulle sessioni, consulta il riferimento API per la risorsa Users.sessions.

Passaggio 6: crea segmenti di attività

I segmenti di attività consentono di rappresentare attività diverse all'interno di una sessione. Un segmento di attività è un segmento di tempo che copre una singola attività. Ad esempio, se un utente va a correre un'ora, puoi creare un segmento di attività di tipo running (8) per l'intera ora. Se un utente viene eseguito per 25 minuti, si prende una pausa per 5, quindi viene eseguita per un'altra mezz'ora, puoi creare tre segmenti di attività consecutivi di tipo running, unknown e running rispettivamente.

La creazione di un segmento attività è come l'aggiunta di qualsiasi altro punto dati. Per creare segmenti di attività, innanzitutto crea un'origine dati del segmento di attività, quindi crea un set di dati a cui aggiungere punti dati del segmento di attività.

L'esempio seguente crea tre segmenti (in esecuzione, a riposo e in esecuzione) negli stessi intervalli di tempo delle letture del battito cardiaco, supponendo che tu abbia già creato un'origine dati del segmento di attività e che l'ID dell'origine dati sia "raw:com.google.activity.segment:1234567890:Example Fit:example-fit-hrm-1:123456":

Metodo HTTP
PATCH
Risorsa
https://www.googleapis.com/fitness/v1/users/me/dataSources/
raw:com.google.activity.segment:1234567890/datasets/1411053997000000000-1411057556000000000
Corpo della richiesta
{
"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
    }
  ]
}
]
}

Questi punti dati del segmento attività vengono aggiunti a un'origine dati creata appositamente per gestire i segmenti attività. Puoi creare una nuova origine dati per ogni insieme di segmenti, ma dovresti riutilizzarne una dedicata a un particolare tipo di sessione, come la pubblicazione.

Le sessioni specificano un tipo di attività che deve corrispondere all'attività generale in cui viene coinvolto l'utente. Anche se un utente fa una pausa durante la corsa, l'esercizio generale è comunque una corsa. In generale, il tipo di attività della sessione corrisponde al tipo di segmento di attività dominante.

Utilizza il tipo di attività sconosciuto (4) per indicare che un utente si sta riposando, perché potresti non saper cosa sta facendo: potrebbe rimanere fermo o fare stretching, bere acqua e così via. Se sai che l'utente non si sta muovendo, puoi utilizzare ancora (3).

Per un elenco dettagliato dei tipi di attività, consulta la sezione Tipi di attività.

Riepilogo

In questo tutorial hai creato origini dati per tipi di dati e segmenti di attività; hai inserito punti dati nel centro fitness; hai creato segmenti di attività per rappresentare le diverse attività che si verificano durante un esercizio e hai inserito una sessione che copre l'intero esercizio.

Google Fit associa i dati inseriti e qualsiasi altro dato disponibile per l'intervallo di tempo in questione a una sessione che rappresenta l'esercizio dell'utente.