Egzersiz etkinliklerini işleme

Sağlık Hizmetleri, ExerciseEvents için destek sağlar. Bu destek, egzersiz sırasında bir etkinlik gerçekleştiğinde uygulamanıza bildirim gönderir ve ilgili meta verileri sağlar.

Bağımlılık ekleme

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

Sağlık Hizmetleri'nde 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:

Modern

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

Kotlin

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

Özellikleri kontrol edin

Sağlık Hizmetlerindeki tüm egzersizler 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 belirli bir egzersiz için hangi egzersiz etkinliklerinin desteklendiğini doğrulamak üzere ExerciseTypeCapabilities.supportedExerciseEvents öğesini kullanı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 desteklendiğini onaylamak için özelliklerin nasıl sorgulanacağı ve ardından GOLF_SHOT_EVENT öğesinin, Swing Türü Sınıflandırmasını desteklediğinin nasıl onaylanacağı 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
}

Egzersizde egzersiz etkinlikleri isteme

Egzersizi başlatmak ve egzersizin bir parçası olarak egzersiz etkinliği istemek için egzersiz için ExerciseConfig belirtin ve exerciseEventType için bir alan ekleyin.

Aşağıdaki örnekte, bir GOLF alıştırmasının parçası olarak GOLF_SHOT_EVENT isteğinde bulunulmuştur:

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

Egzersiz etkinliği güncellemelerine kaydolun

Uygulamanızın egzersiz güncellemeleri almak için sahip olduğu mevcut altyapının bir parçası olarak ExerciseEvent güncellemelerini alabilirsiniz. Aşağıdaki örnekte, GolfShotEvent güncellemeleri için nasıl destek uygulayacağınız 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!")
        }
      }
    }
  }
}