Health Connect'te veri toplama, temel toplama veya birleştirme işlemlerini içerir. gruplara ayırmanızı sağlar. Aşağıdaki iş akışlarında her ikisinin de nasıl yapılacağı gösterilmektedir.
Temel toplama
Verilerinizde temel toplamadan yararlanmak için aggregate
işlevini kullanın
HealthConnectClient
nesnenizde. Kabul edilen bir
Metrik türlerini eklediğiniz AggregateRequest
nesnesi
ve zaman aralığı parametreleridir. Temel toplamaların nasıl adlandırıldığı
ve kullanılan metrik türlerine bakalım.
Kümülatif toplama
Kümülatif toplama, toplam değeri hesaplar.
Aşağıdaki örnekte bir veri türüne ilişkin verilerin nasıl birleştirileceği 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, bir feed'in minimum, maksimum veya ortalama kayıt örneğidir.
Aşağıdaki örnekte istatistiksel toplamanın 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 paketler halinde birleştirmenize de olanak tanıyabilir. İki tür süre ve dönem bilgilerini dahil edebilirsiniz.
Çağrı, ardından bir paket listesi döndürür. Liste seyrek olabileceğinden, veri içermiyorsa listeye dahil edilmez.
Süre
Bu durumda, birleştirilmiş veriler sabit bir süre içinde gruplara bölünür.
anlamına gelir. Verileri paketler halinde birleştirmek için
aggregateGroupByDuration
. Kabul edilen bir
AggregateGroupByDurationRequest
nesnesi
metrik türlerini, zaman aralığını ve Duration
parametrelerini seçebilirsiniz.
Aşağıda, adımların bir dakika uzunluğunda paketlerde toplanmasına ilişkin bir örnek 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ştirilmiş veriler tarih tabanlı bir tutar çerçevesinde gruplara ayrılır.
(ör. hafta veya ay). Verileri paketler halinde birleştirmek için
aggregateGroupByPeriod
. Kabul edilen bir
AggregateGroupByPeriodRequest
nesnesi
metrik türlerini, zaman aralığını ve Period
parametrelerini seçebilirsiniz.
Aşağıda, adımların aylık paketlerde toplanmasıyla ilgili bir örnek 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
}
}
30 günlük okuma kısıtlaması
Uygulamalar, Health Connect'teki verileri şu tarihten önceki 30 gün boyunca okuyabilir: herhangi bir izin verildi.
Ancak, bir kullanıcı uygulamanızı silerse izin geçmişi kaybolur. Kullanıcı uygulamanızı yeniden yüklediğinde ve tekrar izin verdiğinde, uygulamanız Bu yeni tarihten 30 gün öncesine kadar Health Connect.
Örnek
Bir kullanıcı ilk olarak 30 Mart 2023'te uygulamanıza okuma izni verdiyse Uygulamanızın geri okuyabileceği en erken veriler 28 Şubat 2023 tarihli olacaktır devam edebilir.
Kullanıcı, daha sonra 10 Mayıs 2023'te uygulamanızı siler. Kullanıcı, yükleme işlemini okuma izni vermeniz gerekir. Uygulamanızın şu an için en erken tarihi 15 Nisan 2023 tarihli veriler okunmuştur.