Jak nagrać trening

Ten dokument wyjaśnia, jak rejestrować treningi za pomocą interfejsu Fitness REST API.

Krok 1. Skonfiguruj projekt

Musisz skonfigurować projekt w Konsoli interfejsów API Google i aktywować dostęp do interfejsu Fitness REST API, jak opisano w artykule Pierwsze kroki.

Krok 2. Uwierzytelnij aplikację

Aplikacja musi uwierzytelniać żądania do interfejsu Fitness API za pomocą tokena dostępu. Aby uzyskać token dostępu, aplikacja zawiera dane logowania klienta i zakres dostępu, jak opisano w artykule Autoryzowanie żądań.

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

Źródło danych to źródło danych 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
POST
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 rozsądną konwencją nazewnictwa, którą 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 służą do wstawiania punktów danych w sklepie z aplikacjami fitness. Zbiór danych to zbiór punktów danych z jednego źródła danych ograniczony czasowo.

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 zostało zrealizowane, odpowiedź zawiera kod stanu 200 OK.

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

Generuj prawidłowe sygnatury czasowe

Sygnatury czasowe w przykładzie powyżej są podane w nanosekundach. Aby wygenerować prawidłowe sygnatury czasowe, możesz użyć tego skryptu 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 dotyczące tego treningu. Sesje to przedziały czasu, w których użytkownicy wykonują aktywność fizyczną.

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

Wartość sessionId jest dowolna i musi być unikalna dla wszystkich sesji powiązanych z zalogowanym 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żywaj tej samej nazwy pakietu w przypadku sesji i źródeł danych. Dzięki temu dane będą bardziej spójne, a przypisanie danych będzie zawierać link do Twojej aplikacji.

Interwał czasu określony w tej sesji obejmuje dane tętna wstawione wcześniej, więc Google Fit skojarzy 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 przedział czasu obejmujący pojedynczą aktywność. Na przykład: na godzinny bieg możesz utworzyć segment aktywności typu running (8) dla całą godzinę. Jeśli użytkownik biega przez 25 minut, robi 5-minutową przerwę, a potem biega jeszcze przez pół godziny, możesz utworzyć 3 kolejne segmenty aktywności odpowiednio typu running, unknownrunning.

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
    }
  ]
}
]
}

Punkty danych segmentu aktywności są dodawane do źródła danych utworzonego specjalnie do obsługi segmentów aktywności. Możesz utworzyć nowe źródło danych dla każdego zestawu segmentów, ale powinieneś używać tego samego źródła danych dedykowanego konkretnemu rodzajowi sesji, np. uruchamiania.

Sesje określają typ aktywności, który powinien odpowiadać ogólnej 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 nieznana (4), aby wskazać, że użytkownik odpoczywa, ponieważ możesz nie wiedzieć, co robi: może siedzieć, rozciągać się, pić wodę itp. 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 sekcji 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ących się podczas treningu; a wprowadzona została sesja obejmująca całą trening.

Google Fit łączy wstawione przez Ciebie dane oraz inne dane dostępne w danym przedziale czasu z sesją, która reprezentuje trening użytkownika.