التعامل مع أحداث التمارين

توفر "الخدمات الصحية" الدعم لـ 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!")
        }
      }
    }
  }
}