건강 관리 서비스는 ExerciseEvents
를 지원합니다. 이를 통해 운동 중에 이벤트가 발생하면 앱에 알리고 연결된 메타데이터를 제공합니다.
종속 항목 추가
운동 이벤트를 사용하려면 최신 버전의 건강 관리 서비스 SDK가 필요합니다.
건강 관리 서비스에 종속 항목을 추가하려면 프로젝트에 Google Maven 저장소를 추가해야 합니다. 자세한 내용은 Google의 Maven 저장소를 참고하세요.
그런 다음, 모듈 수준의 build.gradle
파일에 다음 종속 항목을 추가합니다.
Groovy
dependencies { implementation "androidx.health:health-services-client:1.1.0-alpha04" }
Kotlin
dependencies { implementation("androidx.health:health-services-client:1.1.0-alpha04") }
기능 확인
건강 관리 서비스의 모든 운동 및 데이터 유형과 마찬가지로 시작 시 기능을 확인합니다. 특히 ExerciseEvents
의 경우 ExerciseCapabilities
요청 외에 ExerciseTypeCapabilities.supportedExerciseEvents
를 사용하여 특정 운동에서 지원되는 운동 이벤트를 확인합니다.
특정 ExerciseEvent
가 지원되는지 확인한 후에는 getExerciseEventCapabilityDetails
를 사용하여 운동 이벤트의 기능도 쿼리해야 합니다.
다음 예에서는 기능을 쿼리하여 GOLF_SHOT_EVENT
가 지원되는지 확인하고 GOLF_SHOT_EVENT
가 스윙 유형 분류를 지원하는지 확인하는 방법을 보여줍니다.
fun handleCapabilities(capabilities: ExerciseCapabilities) {
val golfCapabilities = capabilities.typeToCapabilities[ExerciseType.GOLF]
val golfShotEventSupported =
golfCapabilities
?.supportedExerciseEvents
?.contains(ExerciseEventType.GOLF_SHOT_EVENT)
val golfSwingTypeClassificationSupported =
golfCapabilities
?.getExerciseEventCapabilityDetails(ExerciseEventType.GOLF_SHOT_EVENT)
?.isSwingTypeClassificationSupported ?: false
}
운동에서 운동 이벤트 요청
운동을 시작하고 운동의 일부로 운동 이벤트를 요청하려면 운동의 ExerciseConfig
를 선언하고 exerciseEventType
필드를 추가하세요.
다음 예는 GOLF
운동의 일부로 GOLF_SHOT_EVENT
를 요청합니다.
val config = ExerciseConfig(
exerciseType = ExerciseType.GOLF,
dataTypes = setOf(....),
// ...
exerciseEventTypes = setOf(ExerciseEventType.GOLF_SHOT_EVENT),
)
운동 이벤트 업데이트 등록
운동 업데이트를 수신하기 위해 앱에 있는 기존 인프라의 일부로 ExerciseEvent
업데이트를 받을 수 있습니다.
다음 예는 GolfShotEvent
업데이트 지원을 통합하는 방법을 보여줍니다.
val callback = object : ExerciseUpdateCallback {
override fun onExerciseUpdateReceived(update: ExerciseUpdate) {
...
}
// [ExerciseEvent] intended to come through with low latency and out of
// band of onExerciseUpdateReceived()
override fun onExerciseEventReceived(event: ExerciseEvent) {
when (event) {
is GolfShotEvent -> {
if (it.swingType == GolfShotSwingType.PUTT) {
println("Putt detected!")
}
}
}
}
}