Health Connect'te veri toplama, temel toplama işlemlerini veya verileri gruplara toplamayı içerir. Aşağıdaki iş akışlarında her ikisini de nasıl yapacağınız gösterilmektedir.
Temel toplama
Verilerinizde temel toplama işlemi kullanmak için HealthConnectClient
nesnenizde aggregate
işlevini kullanın. Metrik türlerini ve zaman aralığını parametreleri olarak eklediğiniz bir AggregateRequest
nesnesini kabul eder. Temel toplama işlemlerinin nasıl çağrılacağı, kullanılan metrik türlerine bağlıdır.
Kümülatif toplama
Kümülatif toplama, toplam değeri hesaplar.
Aşağıdaki örnekte, bir veri türüne ait verilerin nasıl toplandığı gösterilmektedir:
suspend fun aggregateDistance(
healthConnectClient: HealthConnectClient,
startTime: Instant,
endTime: Instant
) {
try {
val response = healthConnectClient.aggregate(
AggregateRequest(
metrics = setOf(DistanceRecord.DISTANCE_TOTAL),
timeRangeFilter = TimeRangeFilter.between(startTime, endTime)
)
)
// The result may be null if no data is available in the time range
val distanceTotalInMeters = response[DistanceRecord.DISTANCE_TOTAL]?.inMeters ?: 0L
} catch (e: Exception) {
// Run error handling here
}
}
İstatistiksel toplama
İstatistiksel toplama, kayıtların minimum, maksimum veya ortalama değerlerini örneklerle hesaplar.
Aşağıdaki örnekte, istatistiksel toplama işleminin nasıl kullanılacağı gösterilmektedir:
suspend fun aggregateHeartRate(
healthConnectClient: HealthConnectClient,
startTime: Instant,
endTime: Instant
) {
try {
val response =
healthConnectClient.aggregate(
AggregateRequest(
setOf(HeartRateRecord.BPM_MAX, HeartRateRecord.BPM_MIN),
timeRangeFilter = TimeRangeFilter.between(startTime, endTime)
)
)
// The result may be null if no data is available in the time range
val minimumHeartRate = response[HeartRateRecord.BPM_MIN]
val maximumHeartRate = response[HeartRateRecord.BPM_MAX]
} catch (e: Exception) {
// Run error handling here
}
}
Kovalar
Health Connect, verileri gruplar halinde toplamanıza da olanak tanır. Kullanabileceğiniz iki grup türü süre ve dönem'dir.
Çağrıldıklarında paketlerin listesini döndürürler. Listenin seyrek olabileceğini unutmayın. Bu nedenle, veri içermeyen bir paket listeye dahil edilmez.
Süre
Bu durumda, birleştirilmiş veriler sabit bir süre (ör. bir dakika veya bir saat) içinde gruplara ayrılır. Verileri gruplandırmak için aggregateGroupByDuration
işlevini kullanın. Parametre olarak metrik türlerini, zaman aralığını ve Duration
değerini eklediğiniz bir AggregateGroupByDurationRequest
nesnesini kabul eder.
Aşağıda, adımları dakikalık gruplar halinde toplama örneği gösterilmektedir:
suspend fun aggregateStepsIntoMinutes(
healthConnectClient: HealthConnectClient,
startTime: LocalDateTime,
endTime: LocalDateTime
) {
try {
val response =
healthConnectClient.aggregateGroupByDuration(
AggregateGroupByDurationRequest(
metrics = setOf(StepsRecord.COUNT_TOTAL),
timeRangeFilter = TimeRangeFilter.between(startTime, endTime),
timeRangeSlicer = Duration.ofMinutes(1L)
)
)
for (durationResult in response) {
// The result may be null if no data is available in the time range
val totalSteps = durationResult.result[StepsRecord.COUNT_TOTAL]
}
} catch (e: Exception) {
// Run error handling here
}
}
Nokta
Bu durumda, birleştirilen veriler hafta veya ay gibi tarihe dayalı bir süre içinde gruplara ayrılır. Verileri gruplandırmak için aggregateGroupByPeriod
işlevini kullanın. Parametre olarak metrik türlerini, zaman aralığını ve Period
değerini eklediğiniz bir AggregateGroupByPeriodRequest
nesnesini kabul eder.
Aşağıda, adımları aylık gruplar halinde toplama örneği gösterilmektedir:
suspend fun aggregateStepsIntoMonths(
healthConnectClient: HealthConnectClient,
startTime: LocalDateTime,
endTime: LocalDateTime
) {
try {
val response =
healthConnectClient.aggregateGroupByPeriod(
AggregateGroupByPeriodRequest(
metrics = setOf(StepsRecord.COUNT_TOTAL),
timeRangeFilter = TimeRangeFilter.between(startTime, endTime),
timeRangeSlicer = Period.ofMonths(1)
)
)
for (monthlyResult in response) {
// The result may be null if no data is available in the time range
val totalSteps = monthlyResult.result[StepsRecord.COUNT_TOTAL]
}
} catch (e: Exception) {
// Run error handling here
}
}
Okundu bilgisi kısıtlamaları
Varsayılan olarak tüm uygulamalar, ilk izin verildiği tarihten önceki 30 güne kadar Health Connect'teki verileri okuyabilir.
Okuma izinlerini varsayılan kısıtlamalardan herhangi birinin ötesine genişletmeniz gerekiyorsa PERMISSION_READ_HEALTH_DATA_HISTORY
isteğinde bulunun.
Aksi takdirde, bu izin olmadan 30 günden eski kayıtları okuma girişimi hatayla sonuçlanır.
Silinen bir uygulamanın izin geçmişi
Bir kullanıcı uygulamanızı silerse geçmiş izni de dahil olmak üzere tüm izinler iptal edilir. Kullanıcı uygulamanızı yeniden yükleyip tekrar izin verirse aynı varsayılan kısıtlamalar geçerli olur ve uygulamanız, bu yeni tarihten önceki 30 güne kadar Health Connect'teki verileri okuyabilir.
Örneğin, kullanıcının 10 Mayıs 2023'te uygulamanızı silip 15 Mayıs 2023'te yeniden yüklediğini ve okuma izinleri verdiğini varsayalım. Uygulamanızın varsayılan olarak veri okuyabileceği en erken tarih 15 Nisan 2023'tür.
Kullanıcı tarafından seçilen uygulama önceliklerinden etkilenen toplu veriler
Son kullanıcılar, Health Connect ile entegre ettikleri Uyku ve Etkinlik uygulamaları için öncelik belirleyebilir. Bu öncelik listelerini yalnızca son kullanıcılar değiştirebilir. Toplu okuma yaptığınızda Toplu API, yinelenen verileri hesaba katar ve yalnızca uygulamadaki en yüksek önceliğe sahip verileri saklar. Kullanıcının aynı anda aynı türde veri (ör. atılan adım sayısı veya kat edilen mesafe) yazan birden fazla uygulaması varsa yinelenen veriler olabilir.
Son kullanıcıların uygulamalarına nasıl öncelik verebileceği hakkında bilgi edinmek için Health Connect verilerini yönetme başlıklı makaleyi inceleyin.
Kullanıcı, uygulama ekleyip kaldırabilir ve uygulama önceliklerini değiştirebilir. Kullanıcılar, Health Connect ekranındaki veri toplamalarının en yüksek önceliği verdikleri uygulamayla aynı olması için yinelenen veri yazan bir uygulamayı kaldırmak isteyebilir. Veri toplamları gerçek zamanlı olarak güncellenir.
Toplu API, Aktivite ve Uyku uygulamalarının verilerini, kullanıcının önceliklerini belirlediği şekilde tekilleştirerek hesaplasa da verileri yazan her uygulama için verileri ayrı ayrı hesaplamak üzere kendi mantığınızı oluşturabilirsiniz.
Health Connect yalnızca Etkinlik ve Uyku veri türlerinde tekilleştirme yapar. Gösterilen veri toplamları, Toplama API'si tarafından tekilleştirme yapıldıktan sonraki değerlerdir. Bu toplamlar, adım ve mesafeyle ilgili verilerin bulunduğu en son tam günü gösterir. Diğer uygulama türleri için, bu tür uygulamaların toplam sayısı Health Connect'teki veri toplamalarında gösterilir.
Arka planda okuma
Uygulamanızın arka planda çalışmasını ve Health Connect'ten veri okumasını isteyebilirsiniz. Arka Planda Okuma iznini talep ederseniz kullanıcınız, uygulamanıza arka planda veri okuma izni verebilir.
Kayıt bazında desteklenen toplu veri türleri
Bu tabloda, Health Connect kaydı tarafından desteklenen tüm toplu veri türleri listelenmektedir.