Antrenman Nasıl Kaydedilir?

Bu dokümanda, Fitness REST API kullanılarak antrenmanların nasıl kaydedileceği açıklanmaktadır.

1. Adım: Bir proje oluşturun

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

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

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

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

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

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

HTTP yöntemi
POST
Kaynak

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

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

İstek içeriği
{
"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ünde fitness verileri sağlayan bir nabız monitörünü temsil eden bir veri kaynağı oluşturur. Veri kaynağının kimliğini belirtmeniz gerekir ve bu kimlik herhangi bir değer olabilir. Bu örnekteki veri kaynağı kimliği, benimseyebileceğiniz makul bir adlandırma kuralına sahiptir. Veriler yalnızca bir uygulama tarafından oluşturulduysa 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 deposuna veri noktaları eklemek için veri kümelerini kullanırsınız. Veri kümesi, tek bir veri kaynağından alınan ve zamanla sınırlı veri noktalarının oluşturduğu bir koleksiyondur.

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

HTTP yöntemi
PATCH
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 veri kümesinin başlangıç ve bitiş zamanlarını nanosaniye cinsinden içerir.

İstek içeriği
{
"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 istek, önceki adımda veri kaynağı için bir saat içinde üç nabız veri noktası içeren bir veri kümesi oluşturur.

İ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şturma

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şturun

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 bir fitness aktivitesi gerçekleştirdiği zaman aralığını temsil eder.

Bu antrenmana yönelik bir oturum oluşturmak için aşağıdaki parametrelerle kimliği doğrulanmış bir HTTP isteği gönderin:

HTTP yöntemi
PUT
Kaynak

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

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

İstek içeriği
{
"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 tarafından oturumu özetlemek için kullanılabileceğinden kullanıcıların okuyabileceği 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, verileri daha tutarlı hale getirir ve veri ilişkilendirmenin tekrar uygulamanıza bağlantı vermesini sağlar.

Bu oturumda belirtilen zaman aralığı, daha önce eklenen nabız verilerini kapsadığından 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 bakın.

6. adım: Etkinlik segmentleri oluşturma

Aktivite segmentleri, bir oturumda 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 tüm saat için running (8) türünde bir etkinlik segmenti oluşturabilirsiniz. Bir kullanıcı 25 dakika koşuyor, 5 dakika ara verdikten sonra yarım saat daha koşuyorsa sırasıyla running, unknown ve running türlerinde art arda üç etkinlik segmenti oluşturabilirsiniz.

Etkinlik segmenti oluşturmak, başka bir veri noktası eklemekle aynıdır. Etkinlik segmentleri oluşturmak için önce 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, önceden bir aktivite segmenti veri kaynağı oluşturduğunuz ve veri kaynağı kimliğinin "raw:com.google.activity.segment:1234567890:Örnek Fit:example-fit-hrm-1:123456" olduğu varsayılır ve nabız ölçümleriyle aynı zaman aralıklarında üç segment (koşu, dinlenme ve koşu) oluşturulur:

HTTP yöntemi
PATCH
Kaynak
https://www.googleapis.com/fitness/v1/users/me/dataSources/
raw:com.google.activity.segment:1234567890/datasets/1411053997000000000-1411057556000000000
İstek içeriği
{
"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 segment grubu için yeni bir veri kaynağı oluşturabilirsiniz, ancak belirli bir oturum türüne özel olarak (örneğin, koşu) 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şarken ara verse bile antrenmanın tamamı koşudur. Genel olarak, oturumun etkinlik türü, baskın etkinlik segmenti türüyle eşleşir.

Kullanıcının dinlenmekte olduğunu belirtmek için bilinmiyor (4) etkinlik türünü kullanın. Kullanıcının ne yaptığını bilmiyor olabilirsiniz: Kullanıcı hareketsiz durumda veya esneyor, su içiyor vb. Kullanıcının hareket etmediğini biliyorsanız still (3) özelliğini kullanabilirsiniz.

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

Özet

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

Google Fit, eklediğiniz verileri ve o zaman aralığı için kullanılabilen diğer verileri kullanıcının antrenmanını temsil eden bir oturumla ilişkilendirir.