Today's

길을 나서지 않으면 그 길에서 만날 수 있는 사람을 만날 수 없다

모바일 앱(안드로이드)

Health Connect를 활용한 안드로이드 앱 개발 가이드 (예제)

Billcorea 2025. 5. 14. 15:30
반응형

Health Connect를 활용한 안드로이드 앱 개발 가이드 (예제)

health connect

 

Health Connect는 Android에서 다양한 건강 데이터를 통합하고 관리할 수 있도록 설계된 API입니다. 이 가이드에서는 Health Connect를 활용하여 권한을 요청하고 데이터를 읽고 쓰는 방법을 다룹니다.


📌 1. Health Connect 설정하기

의존성 추가

Health Connect를 사용하려면 build.gradle 파일에 아래와 같은 의존성을 추가해야 합니다:

dependencies {
    // Health Connect 클라이언트 라이브러리
    implementation "androidx.health.connect:connect-client:1.1.0-alpha05"
}

최소 SDK 설정

Health Connect는 API 27 이상에서 사용할 수 있습니다. build.gradle에서 최소 SDK를 확인하세요:

android {
    compileSdk 34

    defaultConfig {
        minSdk 27
        targetSdk 34
    }
}

📌 2. 권한 요청하기

Health Connect는 데이터를 읽거나 쓰기 전에 권한을 요청해야 합니다. 이를 위해 HealthPermission API를 사용합니다.

권한 요청 코드

아래는 권한 요청을 구현하는 예제 코드입니다:

import android.content.Context
import androidx.health.connect.client.HealthConnectClient
import androidx.health.connect.client.permission.HealthPermission
import kotlinx.coroutines.runBlocking

fun requestHealthConnectPermissions(context: Context, onPermissionsGranted: () -> Unit) {
    val healthConnectClient = HealthConnectClient.getOrCreate(context)

    val requiredPermissions = setOf(
        HealthPermission.READ_STEPS,
        HealthPermission.WRITE_STEPS
    )

    runBlocking {
        val grantedPermissions = healthConnectClient.permissionController.getGrantedPermissions()
        if (grantedPermissions.containsAll(requiredPermissions)) {
            onPermissionsGranted()
        } else {
            // 권한 요청
            val requestPermissionContract = healthConnectClient.permissionController.createRequestPermissionResultContract()
            context.startActivity(
                requestPermissionContract.createIntent(context, requiredPermissions)
            )
        }
    }
}

📌 3. 데이터 읽기 및 쓰기

권한을 요청한 후에는 Health Connect API를 통해 데이터를 읽고 쓸 수 있습니다.

데이터 읽기

아래는 걸음 수 데이터를 읽는 코드입니다:

val stepsRecords = healthConnectClient.readRecords(
    ReadRecordsRequest(
        recordType = StepsRecord::class,
        timeRangeFilter = TimeRangeFilter.between(startTime, endTime)
    )
)
stepsRecords.forEach { record ->
    println("걸음 수: ${record.count}")
}

데이터 쓰기

걸음 수 데이터를 쓰는 예제는 다음과 같습니다:

val stepsRecord = StepsRecord(
    count = 1000,
    startTime = Instant.now(),
    endTime = Instant.now().plusSeconds(3600)
)
healthConnectClient.insertRecords(listOf(stepsRecord))

📌 4. 권한 확인 및 사용자 경험 개선

  • 권한 확인:
    권한 요청 전에 이미 허용된 권한을 확인하는 것이 중요합니다.
  • val grantedPermissions = healthConnectClient.permissionController.getGrantedPermissions() if (grantedPermissions.contains(HealthPermission.READ_STEPS)) { println("걸음 수 읽기 권한이 이미 허용되었습니다.") }
  • 거부된 권한 처리:
    권한이 거부된 경우 사용자에게 알림을 표시하거나 재요청을 유도합니다.
  • Toast.makeText(context, "Health Connect 권한이 필요합니다.", Toast.LENGTH_SHORT).show()

📌 5. 추가 참고 사항

  • APK 설치:
    Android 13 이하에서는 Health Connect APK를 Google Play에서 설치해야 합니다.
    Health Connect APK
  • Android 14 이상:
    Android 14 이상에서는 Health Connect가 기본적으로 기기에 내장되어 있습니다.

📌 6. 참고 리소스


이 가이드를 통해 Health Connect를 효과적으로 활용하여 건강 데이터를 관리하는 앱을 개발할 수 있습니다. 추가적인 질문이 있다면 댓글로 남겨주세요! 😊

반응형