Verileri yazma

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:

  1. Yazma sıklığı: Uygulamanızın yeni verileri ne sıklıkta Health Connect. Örneğin, her 15 dakikada bir yeni veriler yazın.
  2. 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