Come registrare un allenamento

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

Passaggio 1: configura un progetto

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

Passaggio 2: autentica l'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 in Autorizzazione delle richieste.

Passaggio 3: crea un'origine dati

Un'origine dati rappresenta una fonte di dati di sensori di un determinato tipo. Tutti i dati inseriti in il fitness store deve essere associato a un'origine dati. Puoi creare le origini dati una volta e riutilizzarle per le sessioni future.

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

Metodo HTTP
PUBBLICA
Risorsa

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

L'ID utente 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 di tipo com.google.heart_rate.bpm. Devi specificare l'ID dell'origine dati che può essere qualsiasi valore. L'ID origine dati in questo esempio segue una convenzione di denominazione ragionevole che puoi adottare. Il componente del dispositivo è facoltativo se i dati sono generati solo da un'app.

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

Per ulteriori informazioni sulle origini dati, consulta il riferimento all'API per la risorsa Users.dataSources.

Passaggio 4: aggiungi punti dati

Utilizzi i set di dati per inserire punti dati nel negozio per il fitness. Un set di dati è una raccolta di dati punti da una singola origine dati vincolati dal tempo.

Per creare un set di dati e aggiungere punti, invia una richiesta HTTP autenticata con questi 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 l'ora di inizio e di 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 sulla frequenza cardiaca nell'arco di un'ora per la fonte di 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 all'API per la risorsa Users.dataSources.datasets.

Generare 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 Fitness Store, 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à fisica.

Per creare una sessione per questo allenamento, invia una richiesta HTTP autenticata con i seguenti parametri:

Metodo HTTP
PUT
Risorsa

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

Il parametro sessionId è arbitrario e deve essere univoco per tutte le sessioni associati 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 sessione che sia leggibile e descrittivo, in quanto potrebbe essere utilizzato da altre app per riassumere la sessione. L'ora di inizio e di fine delle sessioni è in millisecondi (non nanosecondi). Utilizza lo stesso nome di pacchetto per le sessioni e le origini dati. Questo rende i dati più coerenti e garantire che l'attribuzione dei dati riconnetti alla tua app.

L'intervallo di tempo specificato in questa sessione copre i dati sulla frequenza cardiaca inseriti in precedenza, pertanto Google Fit li associa a questa sessione.

Per ulteriori informazioni sulle sessioni, consulta la documentazione di riferimento API per Users.sessions.

Passaggio 6: crea segmenti di attività

I segmenti di attività ti 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 per una corsa di un'ora, puoi creare un segmento di attività di tipo running (8) per un'ora intera. Se un utente corre per 25 minuti, fa una pausa di 5 minuti e poi corre per un'altra mezz'ora, puoi creare tre segmenti di attività consecutivi di tipi running,unknown e running rispettivamente.

La creazione di un segmento di attività equivale all'aggiunta di qualsiasi altro punto dati. Per creare un'attività segmenti di attività, crea prima un'origine dati per i segmenti di attività, poi crea un set di dati e aggiungi del segmento di attività.

L'esempio seguente crea tre segmenti (in corsa, a riposo e in esecuzione) negli stessi intervalli di tempo come letture del battito cardiaco, supponendo che tu abbia già creato un segmento di attività e l'ID origine dati è "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 dei segmenti di attività vengono aggiunti a un'origine dati creata appositamente per gestire i segmenti di attività. Potresti creare una nuova origine dati per ogni insieme di segmenti, ma dovresti riutilizzarne una dedicata a un particolare tipo di sessione, come la corsa.

Le sessioni specificano un tipo di attività, che deve corrispondere all'attività complessiva svolta dall'utente. Anche se un utente fa una pausa durante la corsa, l'esercizio complessivo è comunque una corsa. In genere, il tipo di attività per la sessione corrisponde al tipo di segmento di attività dominante.

Utilizza il tipo di attività sconosciuto (4) per indicare che un utente si sta riposando, come potresti non averlo Sapere cosa sta facendo l'utente: potrebbe essere fermo, fare stretching, bere acqua e così via. Se sai che l'utente non si sta muovendo, puoi utilizzare still (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 negozio per il fitness, hai creato segmenti di attività per rappresentare le diverse attività svolte durante un allenamento e hai inserito una sessione che copre l'intero allenamento.

Google Fit associa i dati che hai inserito e tutti gli altri dati disponibili per quell'intervallo di tempo con una sessione che rappresenta l'esercizio dell'utente.