متطلبات البيانات الوصفية

يتوافق هذا الدليل مع الإصدار 1.1.0-alpha12 من Health Connect والإصدارات الأحدث.

أجرينا تغييرات على البيانات الوصفية في Health Connect للمطوّرين الذين يرقّون إلى الإصدار ‎1.1.0-alpha12 أو الإصدارات الأحدث.

معلومات المكتبة

يحدّد معرّف العنصر Google Maven Android gradle plugin مكتبة Health Connect التي عليك ترقيتها. أضِف مصدر الاعتمادية الخاص بحزمة تطوير البرامج (SDK) لتطبيق Health Connect إلى ملف build.gradle على مستوى الوحدة:

dependencies {
  implementation "androidx.health.connect:connect-client:1.1.0-alpha12"
}

تغييرات البيانات الوصفية

أجرينا تغييران على البيانات الوصفية في حزمة تطوير البرامج (SDK) لتطبيق Health Connect على Jetpack بدءًا من الإصدار ‎1.1.0-alpha12 للمساعدة في التحقّق من توفُّر بيانات وصفية إضافية مفيدة في النظام الأساسي. إذا لم يتم تضمين metadata في أداة إنشاء Record، قد يظهر لك خطأ Constructor internal.

تحديد طريقة التسجيل

يجب تحديد تفاصيل البيانات الوصفية في كل مرة يتم فيها إنشاء عنصر من نوع Record().

عند كتابة البيانات في Health Connect، يجب تحديد إحدى طرق التسجيل الأربع باستخدام إحدى طرق الإنشاء المقابلة لإنشاء Metadata

طريقة التسجيل الوصف
RECORDING_METHOD_UNKNOWN لا يمكن التحقّق من طريقة التسجيل.
RECORDING_METHOD_MANUAL_ENTRY أدخل المستخدم البيانات.
RECORDING_METHOD_AUTOMATICALLY_RECORDED سجّل جهاز أو مستشعر البيانات.
RECORDING_METHOD_ACTIVELY_RECORDED بدأ المستخدم جلسة التسجيل أو أنهاها على أحد الأجهزة.

على سبيل المثال:

 StepsRecord(
    startTime = Instant.ofEpochMilli(1234L),
    startZoneOffset = null,
    endTime = Instant.ofEpochMilli(1236L),
    endZoneOffset = null,
    metadata = Metadata(),
    count = 10
)

نوع الجهاز

يجب تحديد نوع جهاز لجميع البيانات المسجّلة تلقائيًا وبشكل نشط. لمزيد من التفاصيل، اطّلِع على فئة Device في مستندات Jetpack. تشمل أنواع الأجهزة الحالية ما يلي:

نوع الجهاز الوصف
TYPE_UNKNOWN نوع الجهاز غير معروف.
TYPE_WATCH نوع الجهاز هو ساعة.
TYPE_PHONE نوع الجهاز هو هاتف.
TYPE_SCALE نوع الجهاز هو ميزان.
TYPE_RING نوع الجهاز هو خاتم.
TYPE_HEAD_MOUNTED نوع الجهاز هو جهاز يُثبَّت على الرأس.
TYPE_FITNESS_BAND نوع الجهاز هو سوار تتبُّع اللياقة البدنية.
TYPE_CHEST_STRAP نوع الجهاز هو حزام يُربط حول الصدر.
TYPE_SMART_DISPLAY نوع الجهاز هو شاشة ذكية.

لا تتوفّر بعض قيم Device.type إلا في الإصدارات الأحدث من Health Connect. عندما لا تتوفّر ميزة أنواع الأجهزة الموسّعة، يتم التعامل مع هذه الأنواع على أنّها Device.TYPE_UNKNOWN.

أنواع الأجهزة الموسّعة الوصف
TYPE_CONSUMER_MEDICAL_DEVICE نوع الجهاز هو جهاز طبي.
TYPE_GLASSES نوع الجهاز هو نظارات ذكية أو نظارات.
TYPE_HEARABLE نوع الجهاز هو جهاز سمعي.
TYPE_FITNESS_MACHINE نوع الجهاز هو آلة ثابتة.
TYPE_FITNESS_EQUIPMENT نوع الجهاز هو معدّات اللياقة البدنية.
TYPE_PORTABLE_COMPUTER نوع الجهاز هو كمبيوتر محمول.
TYPE_METER نوع الجهاز هو عدّاد قياس.
لتحديد ما إذا كان جهاز المستخدم يتيح ميزة "أنواع الأجهزة الموسّعة" في Health Connect، تحقَّق من توفُّر FEATURE_EXTENDED_DEVICE_TYPES على جهاز المستخدم:

if (healthConnectClient
     .features
     .getFeatureStatus(
       HealthConnectFeatures.FEATURE_EXTENDED_DEVICE_TYPES
     ) == HealthConnectFeatures.FEATURE_STATUS_AVAILABLE) {

  // Feature is available
} else {
  // Feature isn't available
}
يمكنك الاطّلاع على مقالة التحقّق من مدى توفّر الميزة لمزيد من المعلومات.

على سبيل المثال:

 val WATCH_DEVICE = Device(
    manufacturer = "Google",
    model = "Pixel Watch",
    type = Device.TYPE_WATCH
)

// Phone
 val PHONE_DEVICE = Device(
    manufacturer = "Google",
    model = "Pixel 8",
    type = Device.TYPE_PHONE
)

// Ring
 val RING_DEVICE = Device(
    manufacturer = "Oura",
    model = "Ring Gen3",
    type = Device.TYPE_RING
)

// Scale
 val SCALE_DEVICE = Device(
    manufacturer = "Withings",
    model = "Body Comp",
    type = Device.TYPE_SCALE
)

تم تعديل مقتطفات الرمز

تم تعديل أدلة Health Connect حيثما كانت هناك حاجة إلى مقتطفات رمز جديدة للالتزام بمتطلبات البيانات الوصفية الجديدة. للاطّلاع على بعض الأمثلة، يُرجى الرجوع إلى صفحة كتابة البيانات.

طرق جديدة للبيانات الوصفية

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

  • activelyRecorded

    • fun activelyRecorded(device: Device): Metadata.
    • fun activelyRecorded(clientRecordId: String, clientRecordVersion: Long = 0, device: Device): Metadata
    • fun activelyRecordedWithId(id: String, device: Device): Metadata
  • autoRecorded

    • fun autoRecorded(device: Device): Metadata
    • fun autoRecorded(clientRecordId: String, clientRecordVersion: Long = 0, device: Device): Metadata
    • fun autoRecordedWithId(id: String, device: Device): Metadata
  • manualEntry

    • fun manualEntry(device: Device? = null): Metadata
    • fun manualEntry(clientRecordId: String, clientRecordVersion: Long = 0, device: Device? = null): Metadata
    • fun manualEntryWithId(id: String, device: Device? = null): Metadata
  • unknownRecordingMethod

    • fun unknownRecordingMethod(device: Device? = null): Metadata
    • fun unknownRecordingMethod(clientRecordId: String, clientRecordVersion: Long = 0, device: Device? = null): Metadata
    • fun unknownRecordingMethodWithId(id: String, device: Device? = null): Metadata

لمزيد من المعلومات، يُرجى الاطّلاع على مشروع مفتوح المصدر لنظام Android.

اختبار البيانات

استخدِم مكتبة الاختبار و MetadataTestHelper لمحاكاة قيم البيانات الوصفية المتوقّعة:

private val TEST_METADATA =
    Metadata.unknownRecordingMethod(
        clientRecordId = "clientId",
        clientRecordVersion = 1L,
        device = Device(type = Device.TYPE_UNKNOWN),
    ).populatedWithTestValues(id = "test")

يحاكي ذلك سلوك عملية تنفيذ Health Connect، التي تملأ هذه القيم تلقائيًا أثناء إدراج السجلّ.

بالنسبة إلى مكتبة الاختبار، عليك إضافة مصدر الاعتمادية الخاص بحزمة تطوير البرامج (SDK) لتطبيق Health Connect إلى ملف build.gradle على مستوى الوحدة:

dependencies {
  testImplementation "androidx.health.connect:connect-testing:1.0.0-alpha02"
}

ترقية المكتبة

في ما يلي الخطوات الرئيسية التي عليك اتّباعها:

  1. رقِّ مكتبتك إلى الإصدار ‎1.1.0-alpha12.

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

    • يجب تحديد طريقة تسجيل عند إنشاء Record. يتم ذلك باستخدام إحدى طرق الإنشاء المتوفّرة في Metadata، مثل Metadata.manualEntry() أو Metadata.activelyRecorded(device = Device(...)).
    • بالنسبة إلى البيانات التي يسجّلها جهاز، يجب تحديد نوع الجهاز، مثل Device.TYPE_WATCH أو Device.TYPE_PHONE.
  3. إذا كان تطبيقك يكتب أنواع أجهزة موسّعة، يمكنك إخفاءها خلف FEATURE_EXTENTED_DEVICE_TYPES لتجنُّب ظهور TYPE_UNKNOWN غير متوقّع على الأجهزة التي لا تتوفّر عليها الميزة.