健康服务为 ExerciseEvents
提供支持,该服务在运动过程中发生事件时通知您的应用并提供关联的元数据。
添加依赖项
使用运动事件需要最新版本的 Health Services SDK。
要添加对 Health Services 的依赖项,您必须将 Google Maven 存储库添加到您的项目中。有关更多信息,请参阅 Google 的 Maven 存储库。
然后,在您的模块级 build.gradle
文件中,添加以下依赖项
Groovy
dependencies { implementation "androidx.health:health-services-client:1.1.0-alpha03" }
Kotlin
dependencies { implementation("androidx.health:health-services-client:1.1.0-alpha03") }
检查功能
与 Health Services 中的所有运动和数据类型一样,在启动时检查功能。特别是对于 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_SHOT_EVENT
作为 GOLF
运动的一部分
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!")
}
}
}
}
}