Службы работоспособности обеспечивают поддержку ExerciseEvents
, которое уведомляет ваше приложение, когда событие произошло во время упражнения, и предоставляет связанные метаданные.
Добавить зависимости
Для использования событий тренировок требуется последняя версия Health Services SDK.
Чтобы добавить зависимость от Health Services, необходимо добавить в свой проект репозиторий Google Maven. Дополнительную информацию можно найти в репозитории Google Maven .
Затем в файле build.gradle
на уровне модуля добавьте следующую зависимость:
классный
dependencies { implementation "androidx.health:health-services-client:1.1.0-alpha03" }
Котлин
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
поддерживает классификацию типа Swing.
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!")
}
}
}
}
}