Health Services از ExerciseEvents پشتیبانی میکند که در صورت وقوع رویدادی در حین تمرین به برنامه شما اطلاع میدهد و ابردادههای مرتبط را عرضه میکند.
وابستگی ها را اضافه کنید
استفاده از رویدادهای ورزشی به آخرین نسخه SDK خدمات سلامت نیاز دارد.
برای افزودن وابستگی به خدمات سلامت، باید مخزن Google Maven را به پروژه خود اضافه کنید. برای اطلاعات بیشتر، به مخزن Maven Google مراجعه کنید.
سپس، در فایل build.gradle در سطح ماژول، وابستگی زیر را اضافه کنید:
شیار
dependencies { implementation "androidx.health:health-services-client:1.1.0-alpha05" }
کاتلین
dependencies { implementation("androidx.health:health-services-client:1.1.0-alpha05") }
بررسی قابلیت ها
مانند تمام تمرینها و انواع دادهها در خدمات بهداشتی، قابلیتها را هنگام راهاندازی بررسی کنید . مخصوصاً برای 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!")
}
}
}
}
}