توفّر "خدمات الصحة" إمكانية استخدام ExerciseEvents
،
التي تُرسل إشعارًا إلى تطبيقك عند وقوع حدث أثناء ممارسة التمارين الرياضية وتوفّر
البيانات الوصفية المرتبطة به.
إضافة عناصر تابعة
يتطلّب استخدام أحداث التمارين الرياضية توفُّر أحدث إصدار من حزمة تطوير البرامج (SDK) لخدمات الصحة.
لإضافة اعتمادية على "خدمات الصحة"، يجب تضمين مستودع Google Maven في مشروعك. لمزيد من المعلومات، راجِع مستودع Maven من Google.
بعد ذلك، أضِف التبعية التالية في ملف build.gradle
على مستوى الوحدة:
Groovy
dependencies { implementation "androidx.health:health-services-client:1.1.0-alpha05" }
Kotlin
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!")
}
}
}
}
}