تحديد القياسات الصحية باستخدام MeasurementClient

مع MeasureClient بالنسبة إلى واجهة برمجة التطبيقات، يسجِّل تطبيقك عمليات معاودة الاتصال لتلقّي البيانات لفترة زمنية قصيرة. هذا الخيار مخصّص للحالات التي يكون فيها تطبيقك قيد الاستخدام ويتطلب توفّر بيانات سريعة. التحديثات. وإذا أمكن، يمكنك إنشاء هذا باستخدام واجهة مستخدم تعمل في المقدّمة حتى يكون المستخدم على دراية.

إضافة التبعيات

لإضافة الاعتماد على "الخدمات الصحية"، يجب إضافة مستودع 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)
    }
}