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 gibi durumlarda, kullanıcı veya sistem bir okuma işlemi sırasında uygulamanızı arka plana yerleştirirse bu işlemi çalıştırmak için bir ön plan hizmeti kullanmayı düşünebilirsiniz.
Arka planda okuma: Kullanıcıdan ek izin isteyerek, 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
işlevini çağırırken bu değeri 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
Arka planda veri 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ının 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ını okurken 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ı
Uygulamanız, varsayılan olarak verilen tüm izinlerle 30 güne kadar eski verileri okuyabilir.
PERMISSION_READ_HEALTH_DATA_HISTORY
izniyle uygulamanız 30 günden eski verileri okuyabilir.
30 günlük kısıtlama
Uygulamalar, ilk izin verildiği tarihten önceki 30 güne kadar Health Connect'teki 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 kadarki Health Connect verilerini 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 verir. Uygulamanızın artık veri 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 eski tek bir kaydı okuma girişimi hatayla sonuçlanır.
Ayrıca, zaman aralığı isteklerinden birini kullanarak 30 günden eski verileri de okuyamazsınız.