So zeichnet ein Training auf

In diesem Dokument wird beschrieben, wie ein Training mit der Fitness REST API aufgezeichnet wird.

Schritt 1: Projekt einrichten

Sie müssen ein Projekt in der Google API Console einrichten und den Zugriff auf die Fitness REST API aktivieren, wie unter Erste Schritte beschrieben.

Schritt 2: Anwendung authentifizieren

Ihre App muss Anfragen an die Fitness API mit einem Zugriffstoken authentifizieren. Zum Abrufen des Zugriffstokens enthält Ihre Anwendung clientspezifische Anmeldedaten und einen Zugriffsbereich, wie unter Anfragen autorisieren beschrieben.

Schritt 3: Datenquelle erstellen

Eine Datenquelle ist eine Quelle von Sensordaten eines bestimmten Typs. Alle in den Fitnessspeicher eingefügten Daten müssen einer Datenquelle zugeordnet sein. Sie können Datenquellen nur einmal erstellen und dann für zukünftige Sitzungen wiederverwenden.

Um eine Datenquelle zu erstellen, senden Sie eine authentifizierte HTTP-Anfrage mit den folgenden Parametern:

HTTP-Methode
POSTEN
Ressource

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

Die Nutzer-ID me bezieht sich auf den Nutzer, dessen Zugriffstoken die Anfrage autorisiert.

Anfragetext
{
"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"
}

Durch diese Anfrage wird eine Datenquelle erstellt, die einen Herzfrequenzmesser darstellt, der Fitnessdaten vom Typ com.google.heart_rate.bpm liefert. Sie müssen die ID der Datenquelle angeben. Dies kann ein beliebiger Wert sein. Die Datenquellen-ID in diesem Beispiel entspricht einer angemessenen Namenskonvention, die Sie anwenden können. Die Gerätekomponente ist optional, wenn die Daten nur von einer App generiert werden.

Wenn die Anfrage erfolgreich war, ist die Antwort ein 200 OK-Statuscode.

Weitere Informationen zu Datenquellen finden Sie in der API-Referenz zur Ressource Users.dataSources.

Schritt 4: Datenpunkte hinzufügen

Mit Datasets können Sie Datenpunkte in den Fitnessspeicher einfügen. Ein Dataset ist eine Sammlung von Datenpunkten aus einer einzelnen Datenquelle, die zeitlich begrenzt ist.

Senden Sie mit den folgenden Parametern eine authentifizierte HTTP-Anfrage, um ein Dataset zu erstellen und ihm Punkte hinzuzufügen:

HTTP-Methode
PATCH
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

Die URL enthält die Datenquellen-ID sowie die Start- und Endzeit des Datasets in Nanosekunden.

Anfragetext
{
"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
    }
  ]
}
]
}

Mit dieser Anfrage wird ein Dataset mit drei Herzfrequenz-Datenpunkten innerhalb einer Stunde für die Datenquelle im vorherigen Schritt erstellt.

Wenn die Anfrage erfolgreich war, ist die Antwort ein 200 OK-Statuscode.

Weitere Informationen zu Datasets finden Sie in der API-Referenz zur Ressource Users.dataSources.datasets.

Gültige Zeitstempel generieren

Die Zeitstempel im obigen Beispiel sind in Nanosekunden. Zum Generieren gültiger Zeitstempel können Sie das folgende Python-Skript verwenden:

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

Schritt 5: Sitzung erstellen

Nachdem Sie Daten in den Fitnessspeicher eingefügt haben, können Sie eine Sitzung einfügen, um zusätzliche Metadaten für dieses Training bereitzustellen. Sitzungen sind ein Zeitintervall, in dem Nutzer eine Fitnessaktivität ausführen.

Senden Sie eine authentifizierte HTTP-Anfrage mit folgenden Parametern, um eine Sitzung für dieses Training zu erstellen:

HTTP-Methode
PUT
Ressource

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

sessionId ist beliebig und muss für alle Sitzungen eindeutig sein, die dem authentifizierten Nutzer zugeordnet sind.

Anfragetext
{
"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
}

Wählen Sie einen menschenlesbaren und beschreibenden Sitzungsnamen, da er möglicherweise von anderen Apps zum Zusammenfassen der Sitzung verwendet wird. Die Start- und Endzeiten für Sitzungen werden in Millisekunden (nicht in Nanosekunden) angegeben. Verwenden Sie denselben Paketnamen für Ihre Sitzungen und Datenquellen. So werden die Daten einheitlicher und die Datenverknüpfung wird wieder mit Ihrer App verknüpft.

Das in dieser Sitzung angegebene Zeitintervall deckt die Herzfrequenzdaten ab, die zuvor eingefügt wurden. Google Fit verknüpft diese Datenpunkte mit dieser Sitzung.

Weitere Informationen zu Sitzungen finden Sie in der API-Referenz zur Ressource Users.sessions.

Schritt 6: Aktivitätssegmente erstellen

Mithilfe von Aktivitätssegmenten können Sie verschiedene Aktivitäten innerhalb einer Sitzung darstellen. Ein Aktivitätssegment ist ein Zeitsegment, das eine einzelne Aktivität abdeckt. Wenn ein Nutzer beispielsweise eine einstündige Ausführung läuft, können Sie ein Aktivitätssegment vom Typ running (8) für die gesamte Stunde erstellen. Wenn ein Nutzer 25 Minuten lang, 5 Minuten lang und dann noch eine halbe Stunde läuft, können Sie drei aufeinanderfolgende Aktivitätssegmente des Typs running, unknown bzw. running erstellen.

Das Erstellen eines Aktivitätssegments entspricht dem Hinzufügen eines anderen Datenpunkts. Erstellen Sie zum Erstellen von Aktivitätssegmenten zuerst eine Datenquelle für ein Aktivitätssegment. Erstellen Sie dann ein Dataset und fügen Sie ihm Datenpunkte für Aktivitätssegmente hinzu.

Im folgenden Beispiel werden drei Segmente („Laufen“, „Ruhen“ und „Laufen“) im gleichen Zeitraum wie die Herzfrequenzwerte erstellt. Dabei wird davon ausgegangen, dass Sie bereits eine Datenquelle für ein Aktivitätssegment erstellt haben und die Datenquellen-ID „"raw:com.google.activity.segment:1234567890:Example Fit:example-fit-hrm-1:123456"“ lautet:

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

Diese Datensegmente für Aktivitätssegmente werden einer Datenquelle hinzugefügt, die speziell für die Verarbeitung von Aktivitätssegmenten erstellt wurde. Sie können für jeden Satz von Segmenten eine neue Datenquelle erstellen. Sie sollten jedoch eine Datenquelle für einen bestimmten Sitzungstyp (z. B. „Laufen“) wiederverwenden.

Für Sitzungen wird ein Aktivitätstyp festgelegt. Er sollte der Aktivität des Nutzers insgesamt entsprechen. Auch wenn ein Nutzer eine Pause macht, läuft das Training trotzdem. Im Allgemeinen entspricht der Aktivitätstyp für die Sitzung dem dominanten Aktivitätssegmenttyp.

Verwende den Aktivitätstyp unknown (4), um anzugeben, dass ein Nutzer sich ausruht, da du vielleicht nicht weißt, was der Nutzer gerade macht: Er kann stillstehen oder sich strecken, Trinkwasser usw. haben. Wenn Sie wissen, dass der Nutzer nicht bewegt wird, können Sie weiter verwenden (3).

Eine ausführliche Liste der Aktivitätstypen finden Sie unter Aktivitätstypen.

Zusammenfassung

In dieser Anleitung haben Sie Datenquellen für Datentypen und Aktivitätssegmente erstellt, Datenpunkte in den Fitnessspeicher eingefügt, Aktivitätssegmente für die verschiedenen Aktivitäten während eines Trainings erstellt und eine Sitzung für das gesamte Training eingefügt.

Google Fit verknüpft die von Ihnen eingegebenen Daten und alle anderen für dieses Zeitintervall verfügbaren Daten mit einer Sitzung, die das Training des Nutzers darstellt.