measureClient ile spot sağlık ölçümlerini alma

MeasureClient API ile uygulamanız kısa bir süre için veri almak için geri çağırmaları kaydeder. Uygulamanızın kullanıldığı ve hızlı veri güncellemeleri gerektiren durumlar için tasarlanmıştır. Mümkünse bunu bir ön plan kullanıcı arayüzüyle oluşturun. Böylece kullanıcının bilgi sahibi olması faydalı olur.

Bağımlılık ekleme

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

Veri güncellemelerine kaydolmadan önce cihazın, uygulamanızın ihtiyaç duyduğu veri türünü sağlayıp sağlayamayacağını kontrol edin. Öncelikle özellikleri kontrol ederek belirli özellikleri etkinleştirebilir veya devre dışı bırakabilir ya da kullanılamayan özellikleri telafi etmek için uygulamanızın kullanıcı arayüzünü değiştirebilirsiniz.

Aşağıdaki örnekte, bir cihazın HEART_RATE_BPM veri türünü sağlayıp sağlayamayacağını nasıl kontrol edeceğiniz gösterilmektedir:

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
}

Veri için kaydolma

Kaydettiğiniz her geri çağırma, tek bir veri türü içindir. Bazı veri türlerinin kullanılabilirlik durumlarının farklı olabileceğini unutmayın. Örneğin, cihaz bileğe düzgün bir şekilde takılmadığında nabız verileri kullanılamayabilir.

Geri çağırmalar, sensör örnekleme hızlarında artışa yol açarak güç tüketimini artırır. Bu nedenle, geri çağırma işleminin kaydedildiği süreyi en aza indirmek önemlidir.

Aşağıdaki örnekte HEART_RATE_BPM verilerini almak için bir geri çağırmanın nasıl kaydedileceği ve kaydının nasıl iptal edileceği gösterilmektedir:

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