Come registrare un allenamento

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

Passaggio 1: configura un progetto

Devi configurare un progetto nella console API di Google e attivare l'accesso alla API REST Fitness, come descritto in Come iniziare.

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, la tua 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 origini dati una volta riutilizzarli per le sessioni future.

Per creare un'origine dati, invia una richiesta HTTP autenticata con questi 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 saperne di più sulle origini dati, consulta il riferimento API per Users.dataSources.

Passaggio 4: aggiungi punti dati

I set di dati vengono utilizzati 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 del battito cardiaco entro un'ora per i 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 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 esercizio, invia una richiesta HTTP autenticata con questi 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 del battito cardiaco inseriti in precedenza, quindi Google Fit associa i punti dati 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 aiutano a rappresentare diverse attività 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 metà ora, puoi creare tre segmenti di attività consecutivi di tipo running, rispettivamente unknown e running.

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 dell'utente. Anche se un utente fa una pausa durante la corsa, l'esercizio complessivo è comunque una corsa. In generale, tipo di attività per la sessione corrisponderà 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 sapere che l'utente non si muove, puoi usare ancora (3).

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

Riepilogo

In questo tutorial hai creato le origini dati per i tipi di dati e i segmenti di attività. che hai inserito punti dati nel Fitness Store; hai creato segmenti di attività per rappresentare i diversi attività svolte durante un esercizio; e hai inserito una sessione che copre l'intera esercizio fisico.

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.