Menangani peristiwa olahraga

Fitur Kesehatan memberikan dukungan untuk ExerciseEvents yang memberi tahu aplikasi Anda saat suatu peristiwa terjadi selama latihan dan menyediakan metadata terkait.

Menambahkan dependensi

Penggunaan peristiwa latihan memerlukan versi terbaru SDK Fitur Kesehatan.

Untuk menambahkan dependensi di Fitur Kesehatan, Anda harus menambahkan repositori Maven Google ke project Anda. Untuk mengetahui informasi selengkapnya, lihat Repositori Maven Google.

Kemudian, di file build.gradle tingkat modul, tambahkan dependensi berikut:

Groovy

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

Kotlin

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

Memeriksa kemampuan

Seperti semua jenis data dan latihan di Fitur Kesehatan, periksa kemampuan saat memulai. Khususnya untuk ExerciseEvents, selain meminta ExerciseCapabilities, gunakan ExerciseTypeCapabilities.supportedExerciseEvents untuk memverifikasi peristiwa latihan yang didukung untuk latihan tertentu. Setelah mengonfirmasi bahwa ExerciseEvent tertentu didukung, Anda juga harus mengajukan kueri kemampuan peristiwa latihan menggunakan getExerciseEventCapabilityDetails.

Contoh berikut menunjukkan cara mengajukan kueri kemampuan untuk mengonfirmasi bahwa GOLF_SHOT_EVENT didukung, lalu mengonfirmasi bahwa GOLF_SHOT_EVENT mendukung Klasifikasi Jenis Ayunan.

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
}

Meminta peristiwa latihan dalam sebuah latihan

Untuk memulai latihan dan meminta peristiwa latihan sebagai bagian dari latihan, deklarasikan ExerciseConfig untuk latihan tersebut dan tambahkan kolom untuk exerciseEventType.

Contoh berikut meminta GOLF_SHOT_EVENT sebagai bagian dari latihan GOLF:

val config = ExerciseConfig(
  exerciseType = ExerciseType.GOLF,
  dataTypes = setOf(....),
  // ...
  exerciseEventTypes = setOf(ExerciseEventType.GOLF_SHOT_EVENT),
)

Mendaftar untuk pembaruan peristiwa latihan

Anda dapat menerima pembaruan ExerciseEvent sebagai bagian dari infrastruktur yang ada dan dimiliki aplikasi Anda untuk menerima pembaruan latihan. Contoh berikut menunjukkan cara menyertakan dukungan untuk pembaruan 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!")
        }
      }
    }
  }
}