يتوافق هذا الدليل مع الإصدار 1.1.0-rc01 من Health Connect.
يوفّر Health Connect نوع بيانات اليقظة الذهنية لقياس جوانب مختلفة من الصحة العقلية، مثل التوتر والقلق. اليقظة الذهنية هي نوع بيانات يُعدّ جزءًا من العافية العامة في Health Connect.
مدى توفّر الميزة
لتحديد ما إذا كان جهاز المستخدم يتيح تسجيل جلسات التأمل في تطبيق Health
Connect، تحقّق من توفّر FEATURE_MINDFULNESS_SESSION
على العميل:
if (healthConnectClient
.features
.getFeatureStatus(
HealthConnectFeatures.FEATURE_MINDFULNESS_SESSION
) == HealthConnectFeatures.FEATURE_STATUS_AVAILABLE) {
// Feature is available
} else {
// Feature isn't available
}
اطّلِع على التحقّق من مدى توفّر الميزة لمعرفة المزيد من المعلومات.
الأذونات المطلوبة
كما هو الحال مع أي نوع بيانات في Health Connect، يتم
حماية الوصول إلى جلسة التأمل من خلال إذنَين: READ_MINDFULNESS
و
WRITE_MINDFULNESS
.
طلب الأذونات من المستخدم
بعد إنشاء مثيل عميل، يجب أن يطلب تطبيقك الأذونات من العميل. يجب السماح للمستخدمين بمنح الأذونات أو رفضها في أي وقت.
لإجراء ذلك، أنشئ مجموعة من الأذونات لأنواع البيانات المطلوبة. تأكَّد من أنّ الأذونات في المجموعة مُدرَجة في بيان Android أولاً.
// Create a set of permissions for required data types
val PERMISSIONS =
setOf(
HealthPermission.getReadPermission(MindfulnessSessionRecord::class),
HealthPermission.getWritePermission(MindfulnessSessionRecord::class)
)
استخدِم getGrantedPermissions
لمعرفة ما إذا كان تطبيقك قد حصل على
الأذونات المطلوبة. وإذا لم يكن الأمر كذلك، استخدِم
createRequestPermissionResultContract
لطلب
هذه الأذونات. يؤدي ذلك إلى عرض شاشة أذونات Health Connect.
// Create the permissions launcher
val requestPermissionActivityContract = PermissionController.createRequestPermissionResultContract()
val requestPermissions = registerForActivityResult(requestPermissionActivityContract) { granted ->
if (granted.containsAll(PERMISSIONS)) {
// Permissions successfully granted
} else {
// Lack of required permissions
}
}
suspend fun checkPermissionsAndRun(healthConnectClient: HealthConnectClient) {
val granted = healthConnectClient.permissionController.getGrantedPermissions()
if (granted.containsAll(PERMISSIONS)) {
// Permissions already granted; proceed with inserting or reading data
} else {
requestPermissions.launch(PERMISSIONS)
}
}
بما أنّه يمكن للمستخدمين منح الأذونات أو إبطالها في أي وقت، يجب أن يتحقق تطبيقك بشكلٍ دوري من الأذونات الممنوحة ويتعامل مع السيناريوهات التي يتم فيها فقدان الإذن.
المعلومات المضمّنة في سجلّ جلسة اليقظة والوعي التام
يسجّل كل سجلّ لجلسة اليقظة والوعي التام أي نوع من جلسات اليقظة والوعي التام ينفذها المستخدم، مثل التأمل والتنفس والحركة. يمكن أن يتضمّن السجلّ أيضًا ملاحظات إضافية حول الجلسة.
عمليات التجميع المسموح بها
لا تتوفّر عمليات تجميع متوافقة لنوع البيانات هذا.
مثال على الاستخدام
يوضّح المقتطف التالي من الرمز البرمجي كيفية كتابة جلسة تأمل باستخدام مكتبة Jetpack:
if (healthConnectClient.features.getFeatureStatus(FEATURE_MINDFULNESS_SESSION) == HealthConnectFeatures.FEATURE_STATUS_AVAILABLE) {
healthConnectClient.insertRecords(listOf(MindfulnessSessionRecord(
startTime = Instant.now().minus(Duration.ofHours(1)),
startZoneOffset = ZoneOffset.UTC,
endTime = Instant.now(),
endZoneOffset = ZoneOffset.UTC,
mindfulnessSessionType = MindfulnessSessionRecord.MINDFULNESS_SESSION_TYPE_MEDITATION,
title = "Lake meditation",
notes = "Meditation by the lake",
metadata = Metadata.activelyRecorded(
clientRecordId = "myid",
clientRecordVersion = 0.0,
device = Device(type = Device.TYPE_PHONE)
),
)))
}