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

Şununla MeasureClient API kullanıyorsanız uygulamanız kısa bir süreliğine veri almak için geri çağırmalar kaydeder. Bu, uygulamanızın kullanıldığı ve hızlı veri gerektirdiği durumlar içindir güncellemelerine göz atın. Mümkünse bunu bir ön plan kullanıcı arayüzüyle oluşturun. farkında.

kullanılıyor

Bağımlılıkları ekleme

Sağlık Hizmetleri'ne bağımlılık eklemek için Google Maven deposunu eklemeniz gerekir projenize ekleyin. Daha fazla bilgi için bkz. Google'ın Maven deposu.

Ardından modül düzeyindeki build.gradle dosyanıza aşağıdaki bağımlılığı ekleyin:

Eski

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

Kotlin

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

Özellikleri kontrol edin

Veri güncellemelerine kaydolmadan önce cihazın, veri güncelleme özelliği en değerli verilerdir. Öncelikle özellikleri kontrol ederek belirli özellikleri devre dışı bırakın veya özellikleri telafi etmek için uygulamanızın kullanıcı arayüzünü değiştirin daha fazla bilgi edinebilirsiniz.

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

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
}

Veriler için kaydolun

Kaydettiğiniz her geri çağırma, tek bir veri türü içindir. Bazı veri türlerinin farklı kullanılabilirlik durumları olabilir. Örneğin, nabız verileri Cihaz bileğe doğru şekilde takılmadığında kullanılabilir.

Geri aramanızın kaydedildiği süreyi en aza indirmek önemlidir. Bunun nedeni, geri çağırmaların sensör örnekleme hızlarında bir artışa yol açması ve bunun da güç tüketimine sahip olursunuz.

Aşağıdaki örnekte, bir geri çağırmanın nasıl kaydedileceği ve kayıt iptalinin nasıl HEART_RATE_BPM verileri:

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