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

MeasureClient API ile uygulamanız, kısa bir süre boyunca veri almak için geri çağırma işlemlerini kaydeder. Bu, uygulamanızın kullanımda olduğu ve hızlı veri güncellemeleri gerektirdiği durumlar için tasarlanmıştır. Mümkünse bunu, kullanıcının farkında olması için ön planda bir kullanıcı arayüzüyle oluşturun.

Bağımlılık ekleme

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

Veri güncellemelerine kaydolmadan önce cihazın, uygulamanızın ihtiyaç duyduğu veri türünü sağlayabildiğinden emin olun. Ö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ın nasıl kontrol edileceği 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 farklı kullanılabilirlik durumlarına sahip olabileceğini unutmayın. Örneğin, cihaz bileğe düzgün şekilde takılmadığında nabız verileri kullanılamayabilir.

Geri arama sürenizi en aza indirmeniz önemlidir. Geri aramalar, sensör örnekleme hızlarının artmasına ve dolayısıyla güç tüketiminin artmasına neden olur.

Aşağıdaki örnekte, HEART_RATE_BPM verilerini almak için geri çağırma işlevinin nasıl kaydedileceği ve kaydının nasıl silineceğ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)
    }
}