اندازه گیری سلامت نقطه ای را با MeasureClient انجام دهید

با MeasureClient API، برنامه شما برای دریافت داده‌ها برای مدت زمان کوتاهی تماس‌های برگشتی را ثبت می‌کند. این برای شرایطی است که برنامه شما در حال استفاده است و به به‌روزرسانی سریع داده نیاز دارد. در صورت امکان، این را با یک رابط کاربری پیش زمینه ایجاد کنید تا کاربر آگاه باشد.

وابستگی ها را اضافه کنید

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

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

Groovy

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

Kotlin

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

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

قبل از ثبت نام برای به‌روزرسانی داده، بررسی کنید که دستگاه می‌تواند نوع داده‌های مورد نیاز برنامه شما را ارائه دهد. ابتدا با بررسی قابلیت‌ها، می‌توانید ویژگی‌های خاصی را فعال یا غیرفعال کنید یا رابط کاربری برنامه خود را برای جبران قابلیت‌هایی که در دسترس نیستند تغییر دهید.

مثال زیر نحوه بررسی اینکه آیا دستگاهی می‌تواند نوع داده HEART_RATE_BPM را ارائه دهد نشان می‌دهد:

val healthClient = HealthServices.getClient(this /*context*/)
val measureClient = healthClient.measureClient
lifecycleScope.launch {
    val capabilities = measureClient.getCapabilitiesAsync().await()
    supportsHeartRate = DataType.HEART_RATE_BPM in capabilities.supportedDataTypesMeasure
}

برای داده ثبت نام کنید

هر تماس برگشتی که ثبت می کنید برای یک نوع داده واحد است. توجه داشته باشید که برخی از انواع داده‌ها ممکن است حالت‌های مختلف در دسترس بودن داشته باشند. برای مثال، زمانی که دستگاه به درستی به مچ دست وصل نشده باشد، ممکن است داده‌های ضربان قلب در دسترس نباشد.

مهم است که مدت زمان ثبت تماس شما را به حداقل برسانید، زیرا تماس‌های برگشتی باعث افزایش نرخ نمونه‌گیری حسگر می‌شوند که به نوبه خود مصرف انرژی را افزایش می‌دهد.

مثال زیر نحوه ثبت و لغو ثبت تماس برای دریافت داده های HEART_RATE_BPM را نشان می دهد:

val heartRateCallback = object : MeasureCallback {
    override fun onAvailabilityChanged(dataType: DeltaDataType<*, *>, availability: Availability) {
        if (availability is DataTypeAvailability) {
            // Handle availability change.
        }
    }

    override fun onDataReceived(data: DataPointContainer) {
        // Inspect data points.
    }
}
val healthClient = HealthServices.getClient(this /*context*/)
val measureClient = healthClient.measureClient

// Register the callback.
measureClient.registerMeasureCallback(DataType.Companion.HEART_RATE_BPM, heartRateCallback)

// Unregister the callback.
awaitClose {
    runBlocking {
        measureClient.unregisterMeasureCallbackAsync(DataType.Companion.HEART_RATE_BPM, heartRateCallback)
    }
}