توفّر "الخدمات الصحية" الدعم لـ ExerciseEvents
،
التي تُعلِم تطبيقك عند وقوع حدث أثناء ممارسة التمارين الرياضية وتقدِّم البيانات الوصفية ذات الصلة.
إضافة التبعيات
يتطلب استخدام أحداث التمارين توفُّر أحدث إصدار من "حزمة تطوير البرامج (SDK) للخدمات الصحية".
لإضافة تبعية على "الخدمات الصحية"، يجب إضافة مستودع Google Maven إلى مشروعك. لمزيد من المعلومات، راجِع مستودع Maven من Google.
بعد ذلك، في ملف build.gradle
على مستوى الوحدة، أضِف التبعية التالية:
رائع
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!")
}
}
}
}
}