다음 예는 원시 데이터를 일반적인 워크플로의 일부로 읽는 방법을 보여줍니다.
간단한 읽기
헬스 커넥트의 걸음 수 데이터 유형은 측정 시점과 시점 사이에 사용자가 걸은 걸음 수를 포착합니다. 걸음 수는 건강, 피트니스, 웰빙 플랫폼에서 공통으로 측정되는 수치를 나타냅니다. 헬스 커넥트를 사용하면 걸음 수 데이터를 쉽게 읽고 쓸 수 있습니다.
기록을 읽으려면 ReadRecordsRequest
를 만들고 readRecords
를 호출할 때 제공합니다.
다음 예는 버전 내에서 사용자의 걸음 수 데이터를 읽는 방법을
확인할 수 있습니다. SensorManager
에 대한 자세한 내용은
걸음 수 확인
데이터 가이드를 참조하세요.
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
}
}
이전에 작성된 데이터 읽기
앱이 이전에 헬스 커넥트에 기록을 쓴 경우 이러한 특정 기록에 대한 읽기 권한이 없어도 앱에서 기록을 다시 읽을 수 있습니다. 이는 사용자가 재설치한 후 앱을 헬스 커넥트와 다시 동기화해야 하는 시나리오에 적용됩니다.
이 시나리오에서 데이터를 읽으려면 ReadRecordsRequest
의 dataOriginFilter
매개변수에서 DataOrigin
객체로 패키지 이름을 표시해야 합니다.
다음 예는 걸음 수 기록을 읽을 때 패키지 이름을 표시하는 방법을 보여줍니다.
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
}
30일 읽기 제한
헬스 커넥트는 권한이 처음 부여되기 전 최대 30일 동안 데이터를 읽을 수 있습니다.
그러나 사용자가 앱을 삭제하면 권한 기록이 사라집니다. 사용자가 앱을 재설치하고 권한을 다시 부여하면 앱은 새로운 날짜로부터 최대 30일 전부터의 헬스 커넥트의 데이터를 읽을 수 있습니다.
예
사용자가 2023년 3월 30일에 처음 애플리케이션에 읽기 권한을 부여한 경우 앱이 데이터를 읽어올 수 있는 가장 빠른 날짜는 2023년 2월 28일부터입니다.
그리고 사용자가 2023년 5월 10일에 앱을 삭제합니다. 사용자는 2023년 5월 15일에 다시 앱을 설치하고 읽기 권한을 부여합니다. 이제 앱에서 데이터를 읽을 수 있는 가장 빠른 날짜는 2023년 4월 15일입니다.
포그라운드 제한
헬스 커넥트를 통한 데이터 읽기는 포그라운드에서 실행되는 애플리케이션으로 제한됩니다. 이 제한사항은 사용자 개인 정보 보호를 더욱 강화하기 위해 마련되었습니다. 이를 통해 헬스 커넥트는 사용자 데이터에 대한 백그라운드 읽기 액세스 권한이 없고 포그라운드에서만 데이터를 읽고 액세스할 수 있음을 사용자에게 보장합니다.
중단이 허용되는 상황(예: 애플리케이션에 읽기 표시)에서는 헬스 커넥트에서 클라이언트 애플리케이션으로 직접 읽습니다.
중단되지 않는 것을 선호하는 상황(예: 헬스 커넥트에서 다양한 데이터를 읽고 다른 곳에 이를 작성하고 업로드)에서는 쉽게 닫을 수 있는 Activity가 아닌 ForegroundService
를 사용합니다.