Aşağıdaki örnekte, ortak iş akışının bir parçası olarak ham verilerin nasıl okunacağı gösterilmektedir.
Verileri okuma
Health Connect, uygulamaların ön planda ve arka plandayken veri deposundan veri okumasına izin verir:
Ön planda okuma: Normalde uygulamanız ön plandayken Health Connect'ten veri okuyabilirsiniz. Bu tür durumlarda, okuma işlemi sırasında kullanıcı veya sistemin uygulamanızı arka plana alması ihtimaline karşı bu işlemi çalıştırmak için bir ön plan hizmeti kullanmayı düşünebilirsiniz.
Arka plan okumaları: Kullanıcıdan ek izin istediğinizde, kullanıcı veya sistem uygulamanızı arka plana yerleştirdikten sonra verileri okuyabilirsiniz. Arka planda okuma örneğinin tamamını inceleyin.
Health Connect'teki Adım Sayısı 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 ortak bir ölçümü temsil eder. Health Connect, adım sayısı verilerini okumayı ve yazmayı kolaylaştırır.
Kayıtları okumak için bir ReadRecordsRequest
oluşturun ve readRecords
çağrısı yaptığınızda bunu sağlayın.
Aşağıdaki örnekte, belirli bir zamandaki bir kullanıcının adım sayısı verilerinin nasıl okunacağı gösterilmektedir. SensorManager
içeren genişletilmiş bir örnek için adım sayısı veri kılavuzuna bakın.
suspend fun readStepsByTimeRange(
healthConnectClient: HealthConnectClient,
startTime: Instant,
endTime: Instant
) {
try {
val response = healthConnectClient.readRecords(
ReadRecordsRequest(
StepsRecord::class,
timeRangeFilter = TimeRangeFilter.between(startTime, endTime)
)
)
for (stepRecord in response.records) {
// Process each step record
}
} catch (e: Exception) {
// Run error handling here
}
}
Arka planda okuma örneği
Verileri arka planda okumak için manifest dosyanızda aşağıdaki izni beyan edin:
<application>
<uses-permission android:name="android.permission.health.READ_HEALTH_DATA_IN_BACKGROUND" />
...
</application>
Aşağıdaki örnekte, WorkManager
kullanılarak belirli bir süre içinde bir kullanıcının adım sayısı verilerinin arka planda nasıl okunacağı gösterilmektedir:
class ScheduleWorker(private val appContext: Context, workerParams: WorkerParameters):
CoroutineWorker(appContext, workerParams) {
override suspend fun doWork(): Result {
// Read data and process it.
...
// Return success indicating successful data retrieval
return Result.success()
}
}
if (healthConnectClient
.features
.getFeatureStatus(
HealthConnectFeatures.FEATURE_READ_HEALTH_DATA_IN_BACKGROUND
) == HealthConnectFeatures.FEATURE_STATUS_AVAILABLE) {
// Check if necessary permission is granted
val grantedPermissions = healthConnectClient.permissionController.getGrantedPermissions()
if (PERMISSION_READ_HEALTH_DATA_IN_BACKGROUND !in grantedPermissions) {
// Perform read in foreground
...
} else {
// Schedule the periodic work request in background
val periodicWorkRequest = PeriodicWorkRequestBuilder<ScheduleWorker>(1, TimeUnit.HOURS)
.build()
WorkManager.getInstance(context).enqueueUniquePeriodicWork(
"read_health_connect",
ExistingPeriodicWorkPolicy.KEEP,
periodicWorkRequest
)
}
} else {
// Background reading is not available, perform read in foreground
...
}
Daha önce yazılmış verileri okuma
Daha önce Health Connect'e kayıt yazan bir uygulama, söz konusu kayıtlar için okuma izni gerekmeden bunları tekrar okuyabilir. Bu, kullanıcı uygulamayı yeniden yükledikten sonra uygulamanın Health Connect ile yeniden senkronize edilmesi gereken senaryolar için geçerlidir.
Bu senaryoda verileri okumak için paket adını, ReadRecordsRequest
öğenizin dataOriginFilter
parametresinde DataOrigin
nesnesi olarak belirtmeniz gerekir.
Aşağıdaki örnekte, adımlar kayıtları okunurken paket adının nasıl belirtileceği gösterilmektedir:
try {
val response = healthConnectClient.readRecords(
ReadRecordsRequest(
recordType = StepsRecord::class,
timeRangeFilter = TimeRangeFilter.between(startTime, endTime),
dataOriginFilter = setOf(DataOrigin("com.my.package.name"))
)
)
for (record in response.records) {
// Process each record
}
} catch (e: Exception) {
// Run error handling here
}
Okundu bilgisi kısıtlamaları
Varsayılan olarak, uygulamanız verilen tüm izinlerle 30 güne kadar olan verileri okuyabilir.
PERMISSION_READ_HEALTH_DATA_HISTORY
izni sayesinde uygulamanız 30 günden eski verileri okuyabilir.
30 günlük kısıtlama
Health Connect, izinlerin ilk verildiği tarihten önceki 30 güne kadarki verileri okuyabilir.
Ancak bir kullanıcı uygulamanızı silerse izin geçmişi kaybolur. Kullanıcı uygulamanızı yeniden yükleyip tekrar izin verirse uygulamanız, bu yeni tarihten 30 gün öncesine kadar Health Connect'teki verileri okuyabilir.
30 günlük örnek
Bir kullanıcı uygulamanıza ilk kez 30 Mart 2023'te okuma izni verdiyse uygulamanızın geri okuyabileceği en eski veriler 28 Şubat 2023'ten itibaren olacaktır.
Kullanıcı, 10 Mayıs 2023'te uygulamanızı siler. Kullanıcı, 15 Mayıs 2023'te uygulamayı yeniden yüklemeye ve okuma izni vermeye karar veriyor. Uygulamanızın şu anda verileri okuyabileceği en erken tarih 15 Nisan 2023'tür.
30 günden eski verileri okuma
30 günden eski verileri okumak istiyorsanız PERMISSION_READ_HEALTH_DATA_HISTORY
iznini kullanmanız gerekir. Bu izin olmadan, 30 günden daha eski tek bir kaydın okunmaya çalışılması hatayla sonuçlanır.
Ayrıca, zaman aralığı isteklerinden birini kullanarak 30 günden eski verileri de okuyamazsınız.