Antrenman nasıl kaydedilir?

Bu dokümanda, Fitness REST API'yi kullanarak antrenmanın nasıl kaydedileceği açıklanmaktadır.

1. Adım: Bir proje oluşturun

Google API Konsolu'nda bir proje oluşturmanız ve Fitness REST API'ye erişimi Başlarken bölümünde açıklandığı gibi etkinleştirmeniz gerekir.

2. Adım: Uygulamanızın kimliğini doğrulayın

Uygulamanızın Fitness API'ye yapılan isteklerin kimliğini bir erişim jetonu kullanarak doğrulaması gerekiyor. Uygulamanız, erişim jetonunu almak için İstekleri Yetkilendirme bölümünde açıklandığı gibi, müşteriye özel kimlik bilgileri ve erişim kapsamı içerir.

3. Adım: Veri kaynağı oluşturun

Veri kaynağı, belirli bir türdeki sensör verilerinin kaynağını temsil eder. Spor salonuna eklenen tüm veriler bir veri kaynağıyla ilişkilendirilmelidir. Veri kaynaklarını bir kez oluşturup sonraki oturumlarda yeniden kullanabilirsiniz.

Veri kaynağı oluşturmak için aşağıdaki parametrelerle kimliği doğrulanmış bir HTTP isteği gönderin:

HTTP yöntemi
YAYINLA
Kaynak

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

me kullanıcı kimliği, erişim jetonu isteği yetkilendiren kullanıcıyı belirtir.

İstek metni
{
"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"
}

Bu istek, com.google.heart_rate.bpm türündeki fitness verilerini sağlayan bir nabız izleyiciyi temsil eden bir veri kaynağı oluşturur. Veri kaynağının kimliğini belirtmelisiniz. Bu değer, herhangi bir değer olabilir. Bu örnekteki veri kaynağı kimliği, benimseyebileceğiniz makul bir adlandırma kuralı kullanır. Veriler yalnızca bir uygulama tarafından oluşturuluyorsa cihaz bileşeni isteğe bağlıdır.

İstek başarılı olursa, yanıt bir 200 OK durum kodu olur.

Veri kaynakları hakkında daha fazla bilgi için Users.dataSources kaynağının API referansına bakın.

4. Adım: Veri noktaları ekleyin

Fitness mağazasına veri noktaları eklemek için veri kümelerini kullanırsınız. Veri kümesi, zamana bağlı tek bir veri kaynağından toplanan veri noktaları koleksiyonudur.

Veri kümesi oluşturmak ve veri noktası eklemek için şu parametrelerle kimliği doğrulanmış bir HTTP isteği gönderin:

HTTP yöntemi
YANIT
Kaynak

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

URL, veri kaynağı kimliğini ve nanosaniye cinsinden veri kümesinin başlangıç ve bitiş zamanlarını içerir.

İstek metni
{
"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
    }
  ]
}
]
}

Bu istekte, önceki adımda belirtilen veri kaynağı için bir saat içinde üç nabız veri noktası içeren bir veri kümesi oluşturulur.

İstek başarılı olursa, yanıt bir 200 OK durum kodu olur.

Veri kümeleri hakkında daha fazla bilgi için Users.dataSources.datasets kaynağının API referansına bakın.

Geçerli zaman damgaları oluşturun

Yukarıdaki örnekte yer alan zaman damgaları nanosaniye cinsindendir. Geçerli zaman damgaları oluşturmak için aşağıdaki Python komut dosyasını kullanabilirsiniz:

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

5. Adım: Oturum oluşturma

Fitness mağazasına veri eklediğinize göre, artık bu antrenman için ek meta veriler sağlamak üzere bir oturum ekleyebilirsiniz. Oturumlar, kullanıcıların fitness aktivitelerini sergiledikleri bir zaman aralığını temsil eder.

Bu antrenman için oturum oluşturmak üzere aşağıdaki parametreleri içeren, kimliği doğrulanmış bir HTTP isteği gönderin:

HTTP yöntemi
ÇEKME
Kaynak

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

sessionId rastgele bir durumdur ve kimliği doğrulanmış kullanıcıyla ilişkili tüm oturumlar için benzersiz olmalıdır.

İstek metni
{
"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
}

Diğer uygulamaların oturumu özetlemek için kullanılabileceği için okunabilir ve açıklayıcı bir oturum adı seçin. Oturumların başlangıç ve bitiş zamanları milisaniye cinsindendir (nanosaniye değil). Oturumlarınız ve veri kaynaklarınız için aynı paket adını kullanın. Bu işlem, verileri daha tutarlı hale getirir ve veri ilişkilendirmenin uygulamanıza tekrar bağlanmasını sağlar.

Bu oturumda belirtilen zaman aralığı, daha önce eklenen nabız verilerini kapsar. Bu nedenle Google Fit, bu veri noktalarını bu oturumla ilişkilendirir.

Oturumlar hakkında daha fazla bilgi için Users.sessions kaynağının API referansına göz atın.

6. Adım: Etkinlik segmentleri oluşturma

Etkinlik segmentleri, bir oturumdaki farklı etkinlikleri temsil etmenize yardımcı olur. Etkinlik segmenti, tek bir etkinliği kapsayan bir zaman segmentidir. Örneğin, bir kullanıcı bir saatlik koşuya giderse tam bir saat için running (8) türünde bir etkinlik segmenti oluşturabilirsiniz. Bir kullanıcı 25 dakika boyunca çalışır, 5 süre ara verirse ve daha sonra yarım saat daha çalışırsa sırasıyla running, unknown ve running türlerinde art arda üç etkinlik segmenti oluşturabilirsiniz.

Etkinlik segmenti oluşturmak, diğer veri noktalarını eklemekle aynıdır. Etkinlik segmentleri oluşturmak için öncelikle bir etkinlik segmenti veri kaynağı oluşturun, ardından bir veri kümesi oluşturun ve buna etkinlik segmenti veri noktaları ekleyin.

Aşağıdaki örnekte, nabız değerleriyle aynı zaman aralıklarında üç segment (koşu, dinlenim ve koşu) oluşturulur. Bir etkinlik segmenti veri kaynağı oluşturmuş ve veri kaynağı kimliği "raw:com.google.activity.segment:1234567890:Example Fit:example-fit-hrm-1:123456"

HTTP yöntemi
YANIT
Kaynak
https://www.googleapis.com/fitness/v1/users/me/dataSources/
raw:com.google.activity.segment:1234567890/datasets/1411053997000000000-1411057556000000000
İstek metni
{
"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
    }
  ]
}
]
}

Bu etkinlik segmenti veri noktaları, etkinlik segmentlerini işlemek için özel olarak oluşturulmuş bir veri kaynağına eklenir. Her bir segment grubu için yeni bir veri kaynağı oluşturabilirsiniz. Ancak, koşu gibi belirli bir oturum türüne ayrılmış bir veri kaynağını yeniden kullanmanız gerekir.

Oturumlar, kullanıcının etkileşimde bulunduğu genel etkinlikle eşleşmesi gereken bir etkinlik türü belirtir. Kullanıcı koşu yaparken ara olsa bile genel antrenman devam eder. Oturum için etkinlik türü genel olarak baskın etkinlik segmenti türüyle eşleşir.

Kullanıcının ne dinlediğini bilemeyeceğinizi belirtmek için dinlenme (4) etkinlik türünü kullanın. Kullanıcının ne yaptığını bilmiyor olabilirsiniz. Hareketsiz veya esneyen, su içen vb. olabilir. Kullanıcının hareket etmediğini biliyorsanız hâlâ (3) kullanabilirsiniz.

Etkinlik türlerinin ayrıntılı listesi için Etkinlik Türleri bölümünü inceleyin.

Özet

Bu eğiticide, veri türleri ve aktivite segmentleri için veri kaynakları oluşturdunuz, spor salonuna veri noktaları eklediniz, antrenman sırasında gerçekleşen farklı aktiviteleri temsil eden etkinlik segmentleri oluşturdunuz ve tüm antrenmanı kapsayan bir oturum eklediniz.

Google Fit, eklediğiniz verileri ve bu zaman aralığına ait diğer verileri kullanıcının antrenmanını temsil eden bir oturumla ilişkilendirir.