원시 데이터 읽기

다음 예는 원시 데이터를 일반적인 워크플로의 일부로 읽는 방법을 보여줍니다.

간단한 읽기

헬스 커넥트의 걸음 수 데이터 유형은 측정 시점과 시점 사이에 사용자가 걸은 걸음 수를 포착합니다. 걸음 수는 건강, 피트니스, 웰빙 플랫폼에서 공통으로 측정되는 수치를 나타냅니다. 헬스 커넥트를 사용하면 걸음 수 데이터를 쉽게 읽고 쓸 수 있습니다.

기록을 읽으려면 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
    }
}

이전에 작성된 데이터 읽기

앱이 이전에 헬스 커넥트에 기록을 쓴 경우 이러한 특정 기록에 대한 읽기 권한이 없어도 앱에서 기록을 다시 읽을 수 있습니다. 이는 사용자가 재설치한 후 앱을 헬스 커넥트와 다시 동기화해야 하는 시나리오에 적용됩니다.

이 시나리오에서 데이터를 읽으려면 ReadRecordsRequestdataOriginFilter 매개변수에서 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를 사용합니다.