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 için her biri kendi yapısına sahip. Veriler hakkında daha fazla ayrıntı için Jetpack referansına bakın kullanabilirsiniz.
Temel kayıtlar
Health Connect'teki Adımlar veri türü, en fazla 25 saat sürer. Adım sayıları, yaygın olarak kullanılan bir ölçümü temsil eder tüm platformlarda kullanılabilir.
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, ölçüm birimleriyle birlikte değerleri depolayabildiğinden emin olun. Geniş ve kapsamlı Beslenme veri türü, yönetmektir. Çok çeşitli isteğe bağlı besin alanları sunar. olduğunu tespit ettik. Her veri noktası, besin maddelerini temsil eder bir yemek veya gıda maddesinin parçası olarak tüketilmiş olabilecek içeriklerdir.
Bu veri türünde, tüm besin maddeleri
Mass
, energy
ise Energy
bir birimde temsil edilir.
Aşağıdaki örnekte, muz yedi:
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. Bir örnek olarak Bir dizi sinyal örneğini yakalayan Nabız veri türü olduğunu tespit ettik.
Bu veri türünde, samples
parametresi
Nabız örnekleri. Her örnek bir beatsPerMinute
içerir
bir time
değeri için daha uygun olacaktır.
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 gerekiyorsa ve özellikle Uygulama veri deponuzu Health Connect'teki verilerle senkronize edebilirsiniz. verileriniz. Mevcut verileri güncellemenin iki yolu vardır: kayıtları bulmak için kullanılan tanımlayıcıdır.
Meta veri
Aşağıdaki durumlarda gerekli olduğundan ilk olarak Metadata
sınıfını incelemeniz önerilir.
verileri güncelleme. Health Connect'teki her Record
, oluşturulduktan sonra bir
metadata
alanına giriş yapın. Aşağıdaki özellikler şunlarla alakalıdır:
senkronizasyon:
Özellikler | Açıklama |
---|---|
id
|
Health Connect'teki her Record için benzersiz bir id bulunur
değer.. Health Connect bunu otomatik olarak doldurur yeni kayıt eklerken. |
lastModifiedTime
|
Her Record , aynı zamanda
kayıt değiştirildi.. Health Connect bu alanı otomatik olarak doldurur. |
clientRecordId
|
Her Record , ilişkilendirilen benzersiz bir kimliğe sahip olabilir
uygulama veri deponuzda
referans olarak kullanması için kullanılır.
. Uygulamanız bu değeri sağlıyor. |
clientRecordVersion
|
Bir kayıtta clientRecordId varsa
clientRecordVersion , verilerin şunları yapmasına izin vermek için kullanılabilir:
Uygulamanızdaki sürümle senkronize olun
veri deposu olarak kullanılır.. 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.
kayıtlara geçirmeye karar verirsiniz. Ardından, updateRecords
numaralı telefonu arayarak
değişiklikler var.
Aşağıdaki örnekte verilerin nasıl güncelleneceği gösterilmektedir. Bu amaçla, her bir kayıt 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
kullanılmasını öneririz.
insertRecords
işlevi, verileri yükseltebilir.
Veriler, Health Connect'te belirtilen
İstemci Kaydı Kimliklerinin üzerine yazılır. Aksi takdirde, yeni veri olarak yazılır.
Bu senaryo, kullandığınız kaynaktaki verileri senkronize etmeniz gerektiğinde
uygulama veri deponuzu Health Connect'e bağlayabilirsiniz.
Aşağıdaki örnekte, uygulama veri deposunda:
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şleminizde İstemci Kaydı Sürümü, Durum
Connect, clientRecordVersion
'te karşılaştırma kontrolleri gerçekleştirir.
değerler. Eklenen verilerdeki sürüm
sürümünü seçerseniz güncelleme gerçekleşir. Aksi takdirde,
değişikliği yoksayar ve değer aynı kalır.
Verilerinize sürüm oluşturmayı dahil etmek için
Sürümünüze bağlı olarak Long
değerine sahip Metadata.clientRecordVersion
mantığıyla başlayalım.
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ğeri otomatik olarak artmaz.
verilerin beklenmedik bir şekilde üzerine yazılmasını önler. Bu nedenle,
manuel olarak daha yüksek bir değer sağlar.
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 bu diğer uygulamada kullandığı için kendi verilerini Health Connect'e yazar.
Ayrıca, olabilir veya dahili bir sistem hatası olabilir. URL'lerinizi geri çekme ve yeniden deneme stratejilerini sürekli değerlendirmek üzere kullanır. Şu kullanıcıya yazıyorsanız: Health Connect sonuçta başarısız oldu. Uygulamanızın geçmiş deneyime geçtiğinden emin olun o kişi olabilir. Teşhise yardımcı olması için hataları günlüğe kaydetmeyi ve bildirmeyi unutmayın.
Verileri izlerken uygulayabileceğiniz birkaç öneri vardır: Bu değişiklikler, uygulamanızın veri yazma şekline göre değişiklik gösterir.
Pasif izleme
Pasif fitness veya sağlık takibi yapan uygulamalar da buna dahildir. Adımları veya nabzı arka planda sürekli olarak kaydetme.
Uygulamanızın Health Connect'e düzenli aralıklarla veri yazması gerekir. şu yöntemleri kullanabilirsiniz:
- Her senkronizasyonda, yalnızca şu tarihten sonra değiştirilen yeni verileri ve güncellenmiş verileri yaz: son senkronizasyonda.
- Yazma isteği başına en fazla 1.000 kayıt için yığın isteği gönderebilirsiniz.
WorkManager
sayesinde, düzenli aralıklarla arka plan görevlerini planlarken süre en az 15 dakika olmalıdır.Görevleri yalnızca cihaz boşta ve düşük moddayken çalışacak şekilde kısıtla pil.
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 yapan uygulamalar da dahildir. veya beslenme gibi manuel kullanıcı girişleri. Bu kayıtlar, uygulama Ön planda veya günde birkaç kez kullanıldığı nadir durumlarda.
Uygulamanızın, Health Connect'in tamamında çalışmaya devam etmediğinden emin olun. devam edebilir.
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, senkronize Kullanıcı, izlenen bir egzersiz oturumunu sonlandırdığında ortaya çıkan veriler.
- Verileri senkronize etmek için
WorkManager
aracını kullanarak tek seferlik bir görev planlayın daha sonra.
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. Her bir uygun çözünürlük, veri saklamaya devam ederken depolama alanı yükünün azaltılmasına yardımcı olur. tutarlı ve doğru verilerdir. Veri çözünürlüğü iki şeyi kapsar:
- Yazma sıklığı: Uygulamanızın yeni verileri ne sıklıkta Health Connect. Örneğin, her 15 dakikada bir yeni veriler yazın.
- Yazılı verilerin ayrıntı düzeyi: Verilerin aktarılma sıklığı örneklendirilir. Örneğin, 5 saniyede bir nabız örnekleri yazın. Her veri türü kullanılamaz için aynı örnek hızı gerekir. Adım sayısını güncellemenin çok az faydası vardır Her 60 saniyede bir veri içeren, daha seyrek aralıklarla saniye. Ancak, yüksek örnek hızları kullanıcılara daha ayrıntılı ve verilerini ayrıntılı bir şekilde inceleyebilir. Örnek hızı frekansları ayrıntılar ile performans arasında bir denge kurmalısınız.
Gün boyunca izlenen verileri yazın
Adımlar gibi sürekli olarak toplanan veriler için başvurunuz, gün içinde en az 15 dakikada bir Health Connect'e yazma.
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 |
m |
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ın veya uykunun sonunda Health Connect'e yazılmalıdır kabul edilir.
En iyi uygulama olarak, tüm uyku seansları veya egzersiz seansları
kayıt cihazını ve uygun meta verileri
RecordingMethod
Başvurunuz en azından, "beklenen" bölümünde belirtilen yönergeleri izlemelidir sütununu inceleyebilirsiniz. Konum “en iyi”yi yaratmanın rehberlik eder.
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 |
m |
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 |