Xử lý sự kiện tập thể dục

Dịch vụ sức khoẻ hỗ trợ ExerciseEvents. Dịch vụ này thông báo cho ứng dụng của bạn khi một sự kiện xảy ra trong khi tập thể dục và cung cấp siêu dữ liệu liên quan.

Thêm phần phụ thuộc

Để sử dụng sự kiện tập thể dục, bạn phải dùng phiên bản mới nhất của SDK Dịch vụ sức khoẻ.

Để thêm một phần phụ thuộc trên Dịch vụ sức khoẻ, bạn phải thêm kho lưu trữ Google Maven vào dự án. Để biết thêm thông tin, hãy xem Kho lưu trữ Maven của Google.

Sau đó, trong tệp build.gradle cấp mô-đun, hãy thêm phần phụ thuộc sau:

Groovy

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

Kotlin

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

Kiểm tra các chức năng

Tương tự như mọi bài tập thể dục và loại dữ liệu trong Dịch vụ sức khoẻ, hãy kiểm tra các chức năng khi khởi động. Cụ thể, đối với ExerciseEvents, ngoài việc yêu cầu ExerciseCapabilities, hãy sử dụng ExerciseTypeCapabilities.supportedExerciseEvents để xác minh sự kiện tập thể dục nào được hỗ trợ cho bài tập nhất định. Sau khi xác nhận một ExerciseEvent cụ thể được hỗ trợ, bạn cũng nên truy vấn các chức năng của sự kiện tập thể dục bằng getExerciseEventCapabilityDetails.

Ví dụ sau đây cho thấy cách truy vấn các chức năng để xác nhận GOLF_SHOT_EVENT được hỗ trợ, rồi xác nhận rằng GOLF_SHOT_EVENT hỗ trợ Phân loại kiểu xoay.

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
}

Yêu cầu sự kiện tập thể dục trong một bài tập

Để bắt đầu bài tập và yêu cầu một sự kiện tập thể dục trong bài tập này, hãy khai báo ExerciseConfig cho bài tập thể dục và thêm trường cho exerciseEventType của chúng tôi.

Ví dụ sau đây yêu cầu GOLF_SHOT_EVENT trong một bài tập thể dục GOLF:

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

Đăng ký nhận thông tin cập nhật về sự kiện tập thể dục

Bạn có thể nhận thông tin cập nhật về ExerciseEvent trong cơ sở hạ tầng mà ứng dụng của bạn hiện có để phục vụ cho việc nhận thông tin cập nhật về bài tập thể dục. Ví dụ sau đây cho thấy cách tích hợp tính năng hỗ trợ thông tin cập nhật về 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!")
        }
      }
    }
  }
}