Bu kılavuz, Health Connect'te veri yazma veya güncelleme işlemlerini kapsar.
Veri yapısını ayarlayın
Verileri yazmadan önce kayıtları oluşturmamız gerekir. 50'den fazla veri türünün her biri kendi yapısına sahiptir. Kullanılabilir veri türleri hakkında daha fazla ayrıntı için Jetpack referansına bakın.
Temel kayıtlar
Health Connect'teki Adımlar veri türü, kullanıcının ölçümler arasında attığı adım sayısını yakalar. Adım sayıları sağlık, fitness ve sağlıklı yaşam platformlarında yaygın olarak kullanılan bir ölçümdür.
Aşağıdaki örnekte adım sayısı verilerinin nasıl ayarlanacağı gösterilmektedir:
val stepsRecord = StepsRecord(
count = 120,
startTime = START_TIME,
endTime = END_TIME,
startZoneOffset = START_ZONE_OFFSET,
endZoneOffset = END_ZONE_OFFSET
)
Ölçü birimleri içeren kayıtlar
Health Connect, doğruluk sağlamak için değerleri ölçü birimleriyle birlikte depolayabilir. Örneğin, geniş ve kapsamlı Beslenme veri türü. Toplam karbonhidrattan vitaminlere kadar çeşitlilik gösteren, isteğe bağlı çok çeşitli besin alanları içerir. Her veri noktası, bir öğün veya gıda öğesinin parçası olarak tüketilmiş olabilecek besin maddelerini temsil eder.
Bu veri türünde, tüm besinler Mass
birimleriyle temsil edilirken energy
, Energy
birimi cinsinden temsil edilir.
Aşağıdaki örnekte, muz yiyen bir kullanıcı için besin verilerinin nasıl ayarlanacağı gösterilmektedir:
val banana = NutritionRecord(
name = "banana",
energy = 105.0.kilocalories,
dietaryFiber = 3.1.grams,
potassium = 0.422.grams,
totalCarbohydrate = 27.0.grams,
totalFat = 0.4.grams,
saturatedFat = 0.1.grams,
sodium = 0.001.grams,
sugar = 14.0.grams,
vitaminB6 = 0.0005.grams,
vitaminC = 0.0103.grams,
startTime = START_TIME,
endTime = END_TIME,
startZoneOffset = START_ZONE_OFFSET,
endZoneOffset = END_ZONE_OFFSET
)
Seri verileri içeren kayıtlar
Health Connect, seri verilerinin listesini depolayabilir. Bunun bir örneği, ölçümler arasında algılanan bir dizi kalp atışı örneğini yakalayan Nabız veri türüdür.
Bu veri türünde samples
parametresi, Nabız örnekleri listesiyle temsil edilir. Her örnek bir beatsPerMinute
değeri ve bir time
değeri içerir.
Aşağıdaki örnekte, nabız serisi verilerinin nasıl ayarlanacağı gösterilmektedir:
val heartRateRecord = HeartRateRecord(
startTime = START_TIME,
startZoneOffset = START_ZONE_OFFSET,
endTime = END_TIME,
endZoneOffset = END_ZONE_OFFSET,
// records 10 arbitrary data, to replace with actual data
samples = List(10) { index ->
HeartRateRecord.Sample(
time = START_TIME + Duration.ofSeconds(index.toLong()),
beatsPerMinute = 100 + index.toLong(),
)
}
)
Verileri yazma
Health Connect'te en sık kullanılan iş akışlarından biri veri yazmaktır. Kayıt eklemek için insertRecords
kullanın.
Aşağıdaki örnekte, veri ekleyerek adım sayılarının nasıl yazılacağı gösterilmektedir:
suspend fun insertSteps(healthConnectClient: HealthConnectClient) {
try {
val stepsRecord = StepsRecord(
count = 120,
startTime = START_TIME,
endTime = END_TIME,
startZoneOffset = START_ZONE_OFFSET,
endZoneOffset = END_ZONE_OFFSET
)
healthConnectClient.insertRecords(listOf(stepsRecord))
} catch (e: Exception) {
// Run error handling here
}
}
Verileri güncelle
Bir veya daha fazla kaydı değiştirmeniz, özellikle de uygulama veri deponuzu Health Connect'teki verilerle senkronize etmeniz gerektiğinde verilerinizi güncelleyebilirsiniz. Mevcut verileri güncellemenin iki yolu vardır. Bu yöntem, kayıtları bulmak için kullanılan tanımlayıcıya bağlıdır.
Meta veri
Verileri güncellerken gerekli olduğu için ilk olarak Metadata
sınıfını incelemeniz önerilir. Health Connect'te, oluşturulan her Record
için bir metadata
alanı bulunur. Aşağıdaki özellikler senkronizasyonla ilgilidir:
Kod | Açıklama |
---|---|
id
|
Health Connect'teki her Record öğesi benzersiz bir id değerine sahiptir.Health Connect yeni bir kayıt eklerken bunu otomatik olarak doldurur. |
lastModifiedTime
|
Her Record , kaydın en son ne zaman değiştirildiğini de takip eder.Health Connect bunu otomatik olarak doldurur. |
clientRecordId
|
Her Record , uygulama veri deponuzda referans olarak kullanılmak için kendisiyle ilişkilendirilmiş benzersiz bir kimliğe sahip olabilir.
Uygulamanız bu değeri sağlıyor. |
clientRecordVersion
|
Bir kayıtta clientRecordId bulunuyorsa clientRecordVersion , verilerin uygulama veri deponuzdaki sürümle senkronize olmasını sağlamak için kullanılabilir.Uygulamanız bu değeri sağlıyor. |
Kayıt Kimliği aracılığıyla güncelleme
Verileri güncellemek için öncelikle gerekli kayıtları hazırlayın. Gerekirse kayıtlarda
değişiklik yapın. Ardından, değişiklikleri yapmak için updateRecords
adlı kuruluşu arayın.
Aşağıdaki örnekte verilerin nasıl güncelleneceği gösterilmektedir. Bu amaçla, her kaydın alt bölge ofset değerleri PST olarak ayarlanmıştır.
suspend fun updateSteps(
healthConnectClient: HealthConnectClient,
prevRecordStartTime: Instant,
prevRecordEndTime: Instant
) {
try {
val request = healthConnectClient.readRecords(
ReadRecordsRequest(
recordType = StepsRecord::class,
timeRangeFilter = TimeRangeFilter.between(
prevRecordStartTime,
prevRecordEndTime
)
)
)
val newStepsRecords = arrayListOf<StepsRecord>()
for (record in request.records) {
// Adjusted both offset values to reflect changes
val sr = StepsRecord(
count = record.count,
startTime = record.startTime,
startZoneOffset = record.startTime.atZone(ZoneId.of("PST")).offset,
endTime = record.endTime,
endZoneOffset = record.endTime.atZone(ZoneId.of("PST")).offset,
metadata = record.metadata
)
newStepsRecords.add(sr)
}
client.updateRecords(newStepsRecords)
} catch (e: Exception) {
// Run error handling here
}
}
İstemci Kaydı Kimliği aracılığıyla güncelleme
İsteğe bağlı İstemci Kaydı Kimliği ve İstemci Kaydı Sürümü değerlerini kullanıyorsanız updateRecords
yerine insertRecords
değerini kullanmanızı öneririz.
insertRecords
işlevi, verileri yükseltebilir.
Health Connect'te belirtilen istemci kaydı kimliği grubuna göre veriler varsa bunların üzerine yazılır. Aksi takdirde, yeni veri olarak yazılır.
Bu senaryo, uygulama veri mağazanızdaki verileri Health Connect ile senkronize etmeniz gerektiğinde yararlıdır.
Aşağıdaki örnekte, uygulama veri deposundan alınan veriler üzerinde bir güncellemenin nasıl yapılacağı gösterilmektedir:
suspend fun pullStepsFromDatastore() : ArrayList<StepsRecord> {
val appStepsRecords = arrayListOf<StepsRecord>()
// Pull data from app datastore
// ...
// Make changes to data if necessary
// ...
// Store data in appStepsRecords
// ...
var sr = StepsRecord(
// Assign parameters for this record
metadata = Metadata(
clientRecordId = cid
)
)
appStepsRecords.add(sr)
// ...
return appStepsRecords
}
suspend fun upsertSteps(
healthConnectClient: HealthConnectClient,
newStepsRecords: ArrayList<StepsRecord>
) {
try {
healthConnectClient.insertRecords(newStepsRecords)
} catch (e: Exception) {
// Run error handling here
}
}
Bundan sonra, bu işlevleri ana iş parçacığınızda çağırabilirsiniz.
upsertSteps(healthConnectClient, pullStepsFromDatastore())
İstemci Kaydı Sürümünde değer kontrolü
Verileri yükseltme işleminiz İstemci Kaydı Sürümü'nü içeriyorsa Health Connect, clientRecordVersion
değerlerinde karşılaştırma kontrolleri gerçekleştirir. Eklenen verilerdeki sürüm, mevcut verilerdeki sürümden yüksekse güncelleme gerçekleşir. Aksi takdirde, işlem değişikliği yoksayar ve değer aynı kalır.
Verilerinize sürüm oluşturmayı dahil etmek için sürüm oluşturma mantığınıza göre bir Long
değeri Metadata.clientRecordVersion
ile sağlamanız gerekir.
val sr = StepsRecord(
count = count,
startTime = startTime,
startZoneOffset = startZoneOffset,
endTime = endTime,
endZoneOffset = endZoneOffset,
metadata = Metadata(
clientRecordId = cid,
clientRecordVersion = version
)
)
Değişiklikler olduğunda version
değerini otomatik olarak artırmaz. Böylece, verilerin beklenmedik şekilde üzerine yazılması önlenir. Bu durumda manuel olarak
daha yüksek bir değer sağlamanız gerekir.
Veri yazmaya yönelik en iyi uygulamalar
Uygulamalar yalnızca kendi kaynaklı verileri Health Connect'e yazmalıdır.
Uygulamanızdaki veriler başka bir uygulamadan içe aktarıldıysa kendi verilerini Health Connect'e yazma sorumluluğu diğer uygulamaya geçer.
Verilerin sınırların dışında olması veya dahili sistem hatası gibi yazma istisnalarını işleyen bir mantık uygulamak da iyi bir fikirdir. Geri yükleme ve yeniden deneme stratejilerinizi bir iş planlama mekanizmasına uygulayabilirsiniz. Health Connect'e yazma işlemi sonuçta başarısız olursa uygulamanızın bu dışa aktarma noktasını geçebileceğinden emin olun. Teşhise yardımcı olması için hataları günlüğe kaydetmeyi ve bildirmeyi unutmayın.
Verileri izlerken, uygulamanızın veri yazma şekline bağlı olarak uygulayabileceğiniz birkaç öneri vardır.
Pasif izleme
Buna, arka planda sürekli olarak adım kaydetme veya nabız kaydetme gibi pasif fitness veya sağlık takibi yapan uygulamalar da dahildir.
Uygulamanızın aşağıdaki şekillerde Health Connect'e düzenli aralıklarla veri yazması gerekir:
- Her senkronizasyonda, yalnızca son senkronizasyondan sonra değiştirilen yeni ve güncellenmiş verileri yazın.
- Yazma isteği başına en fazla 1.000 kayıt için yığın isteği gönderebilirsiniz.
- En az 15 dakikalık bir süre boyunca düzenli arka plan görevleri planlamak için
WorkManager
kullanın. Görevleri yalnızca cihaz boştayken ve pil seviyesi düşük olduğunda çalışacak şekilde kısıtlayın.
val constraints = Constraints.Builder() .requiresBatteryNotLow() .requiresDeviceIdle(true) .build() val writeDataWork = PeriodicWorkRequestBuilder<WriteDataToHealthConnectWorker>( 15, TimeUnit.MINUTES, 5, TimeUnit.MINUTES ) .setConstraints(constraints) .build()
Etkin izleme
Buna, egzersiz ve uyku gibi etkinliğe dayalı izleme veya beslenme gibi manuel kullanıcı girişleri yapan uygulamalar da dahildir. Bu kayıtlar, uygulama ön plandayken veya gün içinde birkaç kez kullanıldığı nadir durumlarda oluşturulur.
Uygulamanızın, Health Connect'i etkinlik süresince çalışır durumda tutmadığından emin olun.
Veriler, Health Connect'e şu iki yöntemden biriyle yazılmalıdır:
- Etkinlik tamamlandıktan sonra verileri Health Connect ile senkronize edin. Örneğin, kullanıcı izlenen bir egzersiz oturumunu sonlandırdığında verileri senkronize edin.
- Verileri daha sonra senkronize etmek için
WorkManager
aracını kullanarak tek seferlik bir görev planlayın.
Yazma işlemlerinin ayrıntı düzeyi ve sıklığı için en iyi uygulamalar
Health Connect'e veri yazarken uygun çözünürlükleri kullanın. Uygun çözünürlüğün kullanılması, tutarlı ve doğru verileri korurken depolama alanı yükünün azaltılmasına yardımcı olur. Veri çözünürlüğü iki şeyi kapsar:
- Yazma sıklığı: Uygulamanızın yeni verileri Health Connect'e aktarma sıklığıdır. Örneğin, her 15 dakikada bir yeni veriler yazın.
- Yazılı verilerin ayrıntı düzeyi: Aktarılan verilerin ne sıklıkta örneklendiği. Örneğin, 5 saniyede bir nabız örnekleri yazın. Her veri türü için aynı örnek hızı gerekmez. Adım sayısı verilerini her saniye güncellemek, daha seyrek aralıklarla (ör. 60 saniyede bir) güncellenmek yerine çok az avantaj sağlar. Ancak daha yüksek örnek hızları, kullanıcılara sağlık ve fitness verilerine daha ayrıntılı ve ayrıntılı bir bakış sunabilir. Örnek hızı frekansları ayrıntılar ile performans arasında bir denge kurmalıdır.
Gün boyunca izlenen verileri yazın
Uygulamanız, adımlar gibi sürekli olarak toplanan veriler için gün boyunca en az 15 dakikada bir Health Connect'e yazmalıdır.
Veri türü |
Birim |
Beklenen |
Örnek |
Adımlar |
adım |
Dakikada bir |
23:14 - 23:15 - 5 adım 23:16 - 23:17 - 22 adım 23:17 - 23:18 - 8 adım |
StepCadence |
adım/dk. |
Dakikada bir |
23:14 - 23:15 - 17:00 23:16 - 23:17 - 22:00 23:17 - 23:18 - 20:00 |
Tekerlekli sandalye şınavları |
iter |
Dakikada bir |
23:14 - 23:15 - 5 itme 23:16 - 23:17 - 22 itme 23:17 - 23:18 - 8 itme |
Yakılan ActiveCalories |
Kalori |
15 dakikada bir |
23:15 - 23:30 - 2 Kalori 23:30 - 23:45 - 25 Kalori 23:45 - 00:00 - 5 Kalori |
Yakılan Toplam Kalori |
Kalori |
15 dakikada bir |
23:15 - 23:30 - 16 Kalori 23:30 - 23:45 - 16 Kalori 23:45 - 00:00 - 16 Kalori |
Mesafe |
km/dk. |
Dakikada bir |
23:14-23:15 - 0,008 km 23:16 - 23:16 - 0,021 km 23:17 - 23:18 - 0,012 km |
Çıkılan Tırmanma |
dk. |
Dakikada bir |
20:36 - 20:37 - 3,048 m 20:39 - 20:40 - 3,048 m 23:23 - 23:24 - 9,144m |
Çıkılan Katlar |
kat |
Dakikada bir |
23:14 - 23:15 - 5 kat 23:16 - 23:16 - 22 kat 23:17 - 23:18 - 8 kat |
Kalp Hızı |
nabız/dk. |
Dakikada bir |
06:11 - 55 nabız/dk |
Kalp HızıDeğişkenlikRmssd |
ms. |
Dakikada bir |
06:11 - 23 ms |
Solunum Hızı |
nefes/dakika |
Dakikada bir |
23:14 - 23:15 - 60 nefes/dakika 23:16 - 23:16 - 62 nefes/dakika 23:17 - 23:18 - 64 nefes/dakika |
Oksijen Doygunluğu |
% |
Saatte bir |
%6:11 - 95,208 |
Oturumları yaz
Veriler, antrenman veya uyku seansının sonunda Health Connect'e yazılmalıdır.
En iyi uygulama olarak, tüm uyku seansları veya egzersiz oturumları kayıt cihazıyla ve RecordingMethod
dahil olmak üzere uygun meta verilerle yazılmalıdır.
Başvurunuz en azından, aşağıdaki "beklenenler" sütununda yer alan yönergeleri izlemelidir. Mümkün olduğunda "en iyi" kılavuzu takip edin.
Egzersiz sırasında izlenen veriler
Veri türü |
Birim |
Beklenen |
Saygılarımızla, |
Örnek |
Adımlar |
adım |
Dakikada bir |
Saniyede bir |
23:14-23:15: 5 adım 23:16 - 23:17 - 22 adım 23:17 - 23:18 - 8 adım |
StepCadence |
adım/dk. |
Dakikada bir |
Saniyede bir |
23:14-23:15 - 35:00 23:16 - 23:17 - 37:00 23:17 - 23:18 - 40 öğe |
Tekerlekli sandalye şınavları |
iter |
Dakikada bir |
Saniyede bir |
23:14-23:15 - 5 itme 23:16 - 23:17 - 22 itme 23:17 - 23:18 - 8 itme |
Bisiklet Pedalası |
nefes/dk. |
Dakikada bir |
Saniyede bir |
23:14-23:15 - 65 nefes/dk. 23:16 - 23:17 - 70 nefes/dk 23:17 - 23:18 - 68 nefes/dk |
Güç |
vat |
Dakikada bir |
Saniyede bir |
23:14-23:15 - 250 vat 23:16 - 23:17 - 255 vat 23:17 - 23:18 - 245 vat |
Hız |
km/dk. |
Dakikada bir |
Saniyede bir |
23:14-23:15 - 0,3 km/dk 23:16 - 23:17 - 0,4 km/dk 23:17 - 23:18 -0,4 km/dk |
Mesafe |
km/dk |
Dakikada bir |
Saniyede bir |
23:14-23:15 - 0,008 km 23:16 - 23:16 - 0,021 km 23:17 - 23:18 - 0,012 km |
Yakılan ActiveCalories |
Kalori |
Dakikada bir |
Saniyede bir |
23:14-23:15 - 20 Kalori 23:16 - 23:17 - 20 Kalori 23:17 - 23:18 - 25 Kalori |
Yakılan Toplam Kalori |
Kalori |
Dakikada bir |
Saniyede bir |
23:14-23:15 - 36 Kalori 23:16 - 23:17 - 36 Kalori 23:17 - 23:18 - 41 Kalori |
Çıkılan Tırmanma |
dk. |
Dakikada bir |
Saniyede bir |
20:36 - 20:37 - 3,048 m 20:39 - 20:40 - 3,048 m 23:23 - 23:24 - 9,144m |
Egzersiz Rotaları |
Enl/Boyl |
3-5 saniyede bir |
Saniyede bir |
|
Kalp Hızı |
nabız/dk. |
Dakikada bir |
Saniyede bir |
23:14-23:15 - 150 nabız/dk 23:16 - 23:17 - 152 nabız/dk 23:17 - 23:18 - 155 nabız/dk |
Uyku sırasında izlenen veriler
Veri türü |
Birim |
Beklenen örnek sayısı |
Örnek |
Uyku Aşaması |
sahne |
Uyku aşaması başına ayrıntılı süre |
23:46 - 23:50 - uyanık 23:50 - 23:56 - Hafif uyku 23:56 - 00:16 - derin uyku |
Dinlenirken Kalp Hızı |
nabız/dk. |
Tek günlük değer (sabahları ilk iş olarak beklenen) |
06:11 - 60 nabız/dk |
Oksijen Doygunluğu |
% |
Tek günlük değer (sabahları ilk iş olarak beklenen) |
%6:11 - 95,208 |