Egzersiz etkinliklerini işleme

Sağlık Hizmetleri, ExerciseEvents için destek sağlar. Bu hizmet, egzersiz sırasında bir etkinlik gerçekleştiğinde uygulamanızı bilgilendirir ve ilişkili meta verileri sağlar.

Bağımlılık ekleme

Egzersiz etkinliklerini kullanmak için Health Services SDK'nın en yeni sürümü gerekir.

Sağlık Hizmetleri'ne bağımlılık eklemek için projenize Google Maven deposunu eklemeniz gerekir. Daha fazla bilgi için Google'ın Maven deposuna bakın.

Ardından, modül düzeyindeki build.gradle dosyanıza aşağıdaki bağımlılığı ekleyin:

Groovy

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

Kotlin

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

Özellikleri kontrol etme

Sağlık Hizmetleri'ndeki tüm egzersiz ve veri türlerinde olduğu gibi, başlangıçta özellikleri kontrol edin. Özellikle ExerciseEvents için ExerciseCapabilities isteğinde bulunmanın yanı sıra, ExerciseTypeCapabilities.supportedExerciseEvents kullanarak hangi egzersiz etkinliklerinin desteklendiğini doğrulayın. Belirli bir ExerciseEvent öğesinin desteklendiğini onayladıktan sonra, getExerciseEventCapabilityDetails kullanarak egzersiz etkinliğinin özelliklerini de sorgulamanız gerekir.

Aşağıdaki örnekte, GOLF_SHOT_EVENT özelliğinin desteklenip desteklenmediğini doğrulamak için nasıl sorgu gönderileceği ve ardından GOLF_SHOT_EVENT özelliğinin Swing Type Classification'ı desteklediğinin nasıl doğrulanacağı gösterilmektedir.

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
}

Alıştırmada alıştırma etkinlikleri isteme

Alıştırmayı başlatmak ve alıştırma kapsamında bir alıştırma etkinliği isteğinde bulunmak için, alıştırma için ExerciseConfig değerini bildirin ve exerciseEventType için bir alan ekleyin.

Aşağıdaki örnek, GOLF alıştırması kapsamında GOLF_SHOT_EVENT isteğinde bulunuyor:

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

Egzersiz etkinliği güncellemelerine kaydolma

Uygulamanızın egzersiz güncellemelerini alma için kullandığı mevcut altyapı kapsamında ExerciseEvent güncellemeleri alabilirsiniz. Aşağıdaki örnekte, GolfShotEvent güncellemeleri için nasıl destek ekleyeceğiniz gösterilmektedir:

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!")
        }
      }
    }
  }
}