Health Services از ExerciseEvents
پشتیبانی میکند که در صورت وقوع رویدادی در حین تمرین به برنامه شما اطلاع میدهد و ابردادههای مرتبط را عرضه میکند.
وابستگی ها را اضافه کنید
استفاده از رویدادهای ورزشی به آخرین نسخه SDK خدمات سلامت نیاز دارد.
برای افزودن وابستگی به خدمات سلامت، باید مخزن Google Maven را به پروژه خود اضافه کنید. برای اطلاعات بیشتر، به مخزن Maven Google مراجعه کنید.
سپس، در فایل 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") }
بررسی قابلیت ها
مانند تمام تمرینها و انواع دادهها در خدمات بهداشتی، قابلیتها را هنگام راهاندازی بررسی کنید . مخصوصاً برای 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!")
}
}
}
}
}