تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
مع
MeasureClient
بالنسبة إلى واجهة برمجة التطبيقات، يسجِّل تطبيقك عمليات معاودة الاتصال لتلقّي البيانات لفترة زمنية قصيرة.
هذا الخيار مخصّص للحالات التي يكون فيها تطبيقك قيد الاستخدام ويتطلب توفّر بيانات سريعة.
التحديثات. وإذا أمكن، يمكنك إنشاء هذا باستخدام واجهة مستخدم تعمل في المقدّمة حتى يكون المستخدم
على دراية.
إضافة التبعيات
لإضافة الاعتماد على "الخدمات الصحية"، يجب إضافة مستودع Google Maven
لمشروعك. لمزيد من المعلومات، يُرجى مراجعة
مستودع Maven من Google
بعد ذلك، في ملف build.gradle على مستوى الوحدة، أضف التبعية التالية:
قبل التسجيل للحصول على تحديثات البيانات، تحقق من أن الجهاز يوفر نوع
من البيانات التي يحتاجها تطبيقك. ومن خلال التحقق من الإمكانات أولاً، يمكنك تفعيل
إيقاف ميزات معيّنة أو تعديل واجهة المستخدم في تطبيقك للتعويض عن الإمكانات
غير المتوفرة.
يوضح المثال التالي كيفية التحقق مما إذا كان بإمكان الجهاز توفير
نوع بيانات HEART_RATE_BPM:
تكون كل معاودة اتصال تسجِّلها لنوع بيانات واحد. لاحظ أن بعض أنواع البيانات
حالات توفر متفاوتة. على سبيل المثال، قد لا تتضمن بيانات معدل ضربات القلب
تكون متاحة عندما لا يكون الجهاز متصلاً بالمعصم بشكل صحيح.
ومن المهم تقليل مدة تسجيل معاودة الاتصال،
لأنّ عمليات معاودة الاتصال تؤدي إلى زيادة معدلات أخذ العينات من أجهزة الاستشعار، ما يؤدي بدوره إلى زيادة
استهلاك الطاقة.
يوضّح المثال التالي كيفية تسجيل وإلغاء تسجيل معاودة اتصال لتلقّي
بيانات HEART_RATE_BPM:
valheartRateCallback=object:MeasureCallback{overridefunonAvailabilityChanged(dataType:DeltaDataType<*,*>,availability:Availability){if(availabilityisDataTypeAvailability){// Handle availability change.}}overridefunonDataReceived(data:DataPointContainer){// Inspect data points.}}valhealthClient=HealthServices.getClient(this/*context*/)valmeasureClient=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)}}
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["# Take spot health measurements with MeasureClient\n\nWith the\n[`MeasureClient`](/reference/androidx/health/services/client/MeasureClient)\nAPI, your app registers callbacks to receive data for a short amount of time.\nThis is meant for situations in which your app is in use and requires rapid data\nupdates. If possible, create this with a foreground UI so that the user is\naware.\n| **Note:** `MeasureClient` is not suitable for workout tracking. Instead, [record an\n| exercise](/training/wearables/health-services/active-data/exercise-client) using `ExerciseClient`.\n\nAdd dependencies\n----------------\n\nTo add a dependency on Health Services, you must add the Google Maven repository\nto your project. For more information, see\n[Google's Maven repository](/studio/build/dependencies#google-maven).\n\nThen, in your module-level `build.gradle` file, add the following dependency: \n\n### Groovy\n\n```groovy\ndependencies {\n implementation \"androidx.health:health-services-client:1.1.0-alpha05\"\n}\n```\n\n### Kotlin\n\n```kotlin\ndependencies {\n implementation(\"androidx.health:health-services-client:1.1.0-alpha05\")\n}\n```\n| **Note:** This API is asynchronous and relies on `ListenableFuture` extensively. See [Using a ListenableFuture](/guide/background/listenablefuture) for more information about this concept.\n\nCheck capabilities\n------------------\n\nBefore registering for data updates, check that the device can provide the type\nof data your app needs. By checking capabilities first, you can enable or\ndisable certain features or modify your app's UI to compensate for capabilities\nthat are not available.\n\nThe following example shows how to check whether a device can provide the\n`HEART_RATE_BPM` data type: \n\n val healthClient = HealthServices.getClient(this /*context*/)\n val measureClient = healthClient.measureClient\n lifecycleScope.launch {\n val capabilities = measureClient.getCapabilitiesAsync().await()\n supportsHeartRate = DataType.HEART_RATE_BPM in capabilities.supportedDataTypesMeasure\n }\n\nRegister for data\n-----------------\n\n| **Note:** Request necessary permissions before registering to receive data that requires a permission.\n\nEach callback you register is for a single data type. Note that some data types\nmight have varying states of availability. For example, heart rate data might not\nbe available when the device is not properly attached to the wrist.\n\nIt's important to minimize the amount of time that your callback is registered,\nas callbacks cause an increase in sensor sampling rates, which in turn increases\npower consumption.\n\nThe following example shows how to register and unregister a callback to receive\n`HEART_RATE_BPM` data: \n\n val heartRateCallback = object : MeasureCallback {\n override fun onAvailabilityChanged(dataType: DeltaDataType\u003c*, *\u003e, availability: Availability) {\n if (availability is DataTypeAvailability) {\n // Handle availability change.\n }\n }\n\n override fun onDataReceived(data: DataPointContainer) {\n // Inspect data points.\n }\n }\n val healthClient = HealthServices.getClient(this /*context*/)\n val measureClient = healthClient.measureClient\n\n // Register the callback.\n measureClient.registerMeasureCallback(DataType.Companion.HEART_RATE_BPM, heartRateCallback)\n\n // Unregister the callback.\n awaitClose {\n runBlocking {\n measureClient.unregisterMeasureCallbackAsync(DataType.Companion.HEART_RATE_BPM, heartRateCallback)\n }\n }\n\n| **Note:** Kotlin developers can use `callbackFlow` to take advantage of coroutines and lifecycle. See the [Measure Data sample](https://github.com/android/health-samples/tree/main/health-services/MeasureDataCompose) on GitHub for an example."]]