رسیدگی به رویدادهای تمرین

«خدمات سلامتی» از ExerciseEvents پشتیبانی می‌کند که وقتی رویدادی درطول تمرین رخ می‌دهد به برنامه‌تان اطلاع می‌دهد و فراداده‌های مرتبط را ارائه می‌کند.

افزودن وابستگی‌ها

استفاده از رویدادهای تمرین به جدیدترین نسخه کیت توسعه نرم‌افزار «خدمات سلامت» نیاز دارد.

برای افزودن وابستگی به «خدمات بهداشتی»، باید مخزن Google Maven را به پروژه‌تان اضافه کنید. برای اطلاعات بیشتر، به مخزن Maven در Google مراجعه کنید.

سپس، در فایل build.gradle سطح ماژول، وابستگی زیر را اضافه کنید:

شیار

dependencies {
    implementation "androidx.health:health-services-client:1.1.0"
}

کاتلین

dependencies {
    implementation("androidx.health:health-services-client:1.1.0")
}

بررسی قابلیت‌ها

همانند همه تمرین‌ها و انواع داده‌ها در «خدمات سلامت»، قابلیت‌ها را در زمان راه‌اندازی بررسی کنید. به‌ویژه برای 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!")
        }
      }
    }
  }
}