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-1411057556000000000URL, 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.