Jak nagrać trening

Ten dokument opisuje, jak nagrać trening za pomocą interfejsu Fitness API typu REST.

Krok 1. Skonfiguruj projekt

Musisz skonfigurować projekt w konsoli interfejsów API Google i aktywować dostęp do Interfejs Fitness API typu REST opisany w artykule Pierwsze kroki.

Krok 2. Uwierzytelnij aplikację

Twoja aplikacja musi uwierzytelniać żądania do interfejsu Fitness API przy użyciu tokena dostępu. Aby uzyskać token dostępu, aplikacja zawiera dane logowania specyficzne dla klienta i zakres dostępu, jak opisano w artykule Autoryzacja żądań.

Krok 3. Utwórz źródło danych

Źródło danych reprezentuje źródło danych z czujnika określonego typu. Wszystkie dane zostały wstawione do sklep fitness musi być powiązany ze źródłem danych. Źródła danych możesz tworzyć jednorazowo wykorzystaj je w kolejnych sesjach.

Aby utworzyć źródło danych, prześlij uwierzytelnione żądanie HTTP z tymi parametrami:

Metoda HTTP
OPUBLIKUJ
Zasób

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

Identyfikator użytkownika me odnosi się do użytkownika, którego token dostępu autoryzuje żądanie.

Treść żądania
{
"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"
}

To żądanie tworzy źródło danych, które reprezentuje pulsometr, który dostarcza dane typu com.google.heart_rate.bpm. Musisz określić identyfikator źródła danych. może mieć dowolną wartość. Identyfikator źródła danych w tym przykładzie jest zgodny z uzasadnioną konwencją nazewnictwa które możesz zastosować. Komponent urządzenia jest opcjonalny, jeśli dane są generowane tylko przez aplikację.

Jeśli żądanie zostanie zrealizowane, odpowiedź będzie miała kod stanu 200 OK.

Więcej informacji o źródłach danych znajdziesz w dokumentacji interfejsu API Users.dataSources.

Krok 4. Dodaj punkty danych

Zbiory danych pozwalają wstawiać punkty danych w magazynie fitness. Zbiór danych to zbiór danych ograniczonych czasowo punktami z jednego źródła danych.

Aby utworzyć zbiór danych i dodać do niego punkty, prześlij uwierzytelnione żądanie HTTP za pomocą tych parametry:

Metoda HTTP
WERSJA
Zasób

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

Adres URL zawiera identyfikator źródła danych oraz czas rozpoczęcia i zakończenia zbioru danych w nanosekundach.

Treść żądania
{
"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
    }
  ]
}
]
}

To żądanie tworzy zbiór danych z 3 punktami danych o tętnie w ciągu godziny. źródła kreacji w poprzednim kroku.

Jeśli żądanie zostanie zrealizowane, odpowiedź będzie miała kod stanu 200 OK.

Więcej informacji o zbiorach danych znajdziesz w dokumentacji interfejsu API Users.dataSources.datasets.

Generuj prawidłowe sygnatury czasowe

W tym przykładzie sygnatury czasowe są podane w nanosekundach. Aby wygenerować prawidłowe sygnatury czasowe, możesz użyć funkcji ten skrypt Pythona:

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

Krok 5. Utwórz sesję

Po wstawieniu danych do sklepu fitness możesz wstawić sesję, aby udostępnić dodatkowe metadane dla tego treningu. Sesje reprezentują przedział czasu, w którym użytkownicy wykonywać ćwiczenia.

Aby utworzyć sesję dla tego treningu, prześlij uwierzytelnione żądanie HTTP z tymi parametrami:

Metoda HTTP
UDERZENIE
Zasób

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

Parametr sessionId jest dowolny i musi być niepowtarzalny dla wszystkich sesji powiązane z uwierzytelnionym użytkownikiem.

Treść żądania
{
"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
}

Wybierz nazwę sesji, która będzie zrozumiała dla człowieka i opisowa, ponieważ może być używana przez inne aplikacje podsumowując sesję. Czas rozpoczęcia i zakończenia sesji jest podany w milisekundach (nie nanosekund). Użyj tej samej nazwy pakietu dla sesji i źródeł danych; to sprawia, bardziej spójne dane i zapewni powiązanie atrybucji danych z aplikacją.

Przedział czasu określony w tej sesji obejmuje dane dotyczące tętna wstawione wcześniej, więc Google Fit wiąże te punkty danych z tą sesją.

Więcej informacji o sesjach znajdziesz w dokumentacji API w Users.sessions.

Krok 6. Utwórz segmenty aktywności

Segmenty aktywności pomagają Ci reprezentować różne aktywności w ramach sesji. Segment aktywności to segment czasu, który obejmuje pojedynczą aktywność. Na przykład: na godzinny bieg możesz utworzyć segment aktywności typu running (8) dla całą godzinę. Jeśli użytkownik korzysta z 25 minut, robi 5 minut przerwy, a następnie przez kolejne pół godziny możesz utworzyć trzy następujące po sobie segmenty aktywności typu running, unknown i running.

Tworzenie segmentu aktywności przebiega tak samo jak dodawanie innych punktów danych. Aby utworzyć aktywność najpierw utwórz źródło danych o segmentach aktywności, a potem utwórz zbiór danych i dodaj danych o segmencie aktywności.

Poniższy przykład pokazuje 3 segmenty (aktywny, spoczynkowy i aktywny) w tych samych przedziałach czasowych odczyty tętna, zakładając, że masz już utworzony segment aktywności źródła danych, a jego identyfikator to „raw:com.google.activity.segment:1234567890:Example Fit:example-fit-hrm-1:123456":

Metoda HTTP
WERSJA
Zasób
https://www.googleapis.com/fitness/v1/users/me/dataSources/
raw:com.google.activity.segment:1234567890/datasets/1411053997000000000-1411057556000000000
Treść żądania
{
"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
    }
  ]
}
]
}

Te punkty danych o segmentach aktywności są dodawane do źródła danych, które zostało specjalnie utworzone do obsługi segmentów aktywności. Możesz utworzyć nowe źródło danych dla każdego zestawu segmentów, lepiej użyć ponownie sesji przeznaczonej dla konkretnego typu sesji, np. biegania.

Sesje określają typ działania, który powinien być zgodny z ogólną aktywnością użytkownika. Nawet jeśli użytkownik zrobi sobie przerwę podczas biegu, cały trening pozostanie uruchomiony. Ogólnie rzecz biorąc, aktywności w sesji odpowiada typowi dominującego segmentu aktywności.

Użyj typu aktywności nieznane (4), aby wskazać, że użytkownik odpoczywa, wiedzieć, co robi użytkownik: może się nie ruszać, rozciągać się, pić wodę itd. Jeśli gdy wiesz, że użytkownik się nie rusza, możesz użyć opcji Nadal (3).

Szczegółową listę typów aktywności znajdziesz w artykule Typy aktywności.

Podsumowanie

W tym samouczku utworzyliśmy dla Ciebie źródła danych dla typów danych i segmentów aktywności. wstawiony przez Ciebie punkty danych do sklepu fitness; możesz utworzyć segmenty aktywności, aby reprezentować różne aktywności odbywające się podczas treningu; a wprowadzona została sesja obejmująca całą trening.

Google Fit wiąże wstawione dane ze wszystkimi innymi danymi dostępnymi w danym przedziale czasu z sesją, która reprezentuje trening użytkownika.