يتضمّن نظام التشغيل Android 13 android.hardware.health
AIDL HAL،
وهو تحويل من health@2.1 HAL. يوفّر هذا الإصدار الجديد من طبقة تجريد الأجهزة المزايا التالية:
- إزالة واجهات برمجة التطبيقات غير المستخدَمة ذات الصلة بالشواحن
- إزالة
StorageAttribute
والحقول ذات الصلة غير المستخدَمة - إمكانية الشحن باستخدام قاعدة شحن
يتضمّن نظام التشغيل Android 11 الإصدار 2.1 من android.hardware.health
HAL، وهو ترقية بسيطة من الإصدار 2.0 من health@HAL. يوفّر هذا الإصدار الجديد من طبقة تجريد الأجهزة المزايا التالية:
- فصل أكثر وضوحًا بين إطار العمل ورمز المورّد
- زيادة درجات الحرية لتخصيص المورّدين في تقارير المعلومات الصحية
- معلومات أكثر عن سلامة الجهاز من مجرد البطارية
تتوفّر في هذه الصفحة مستندات حول تنفيذ Health 2.1 HAL كمرجع.
المتطلبات
يحتوي هذا القسم على متطلبات الإصدارات 11 و12 و13 من نظام التشغيل Android أو الإصدارات الأحدث.
الأجهزة التي تعمل بالإصدارَين 11 و12 من نظام التشغيل Android
يجب أن توفّر الأجهزة التي تعمل بالإصدارين 11 و12 من نظام التشغيل Android الإصدار 2.1 من طبقة HAL أو طبقة AIDL HAL. على الأجهزة التي لا تعمل بالإصدار 11 أو 12 من نظام التشغيل Android ولكنها تخطّط لتحديث صورة المورّد إلى الإصدار 5 من مصفوفة توافق إطار العمل المستهدف (الذي تم إصداره في الإصدار 11 من نظام التشغيل Android) أو الإصدار 6 (الذي تم إصداره في الإصدار 12 من نظام التشغيل Android)، إزالة عمليات تنفيذ الإصدار 2.0 الحالية من طبقة HAL وتوفير الإصدار 2.1 من طبقة HAL أو طبقة HAL المستندة إلى لغة تعريف واجهة Android (AIDL). يُنصح أيضًا بتوفير الإصدار 2.1 أو AIDL HAL للأجهزة التي لا تعمل بالإصدار 11 من نظام التشغيل Android ولا تخطّط لتحديث صورة المورّد.
يتضمّن AOSP العديد من مكتبات المساعدة المصمَّمة لمساعدتك في تنفيذ 2.1 HAL والانتقال من إصدارات HIDL HAL القديمة.
الأجهزة التي تعمل بالإصدار 13 من نظام التشغيل Android والإصدارات الأحدث
يجب أن توفّر الأجهزة التي تعمل بالإصدار 13 من نظام التشغيل Android واجهة AIDL HAL (ويجب ألّا توفّر واجهة HIDL HAL). يجب أن تزيل الأجهزة التي لا تعمل بالإصدار 13 من نظام التشغيل Android ولكنها تخطّط لتحديث صورة المورّد إلى الإصدار 7 من مصفوفة توافق إطار العمل المستهدف (الذي تم إصداره في Android 13) عمليات التنفيذ الحالية لطبقة تجريد الأجهزة (HAL) المستندة إلى لغة تعريف واجهة HIDL، وأن توفّر طبقة تجريد الأجهزة (HAL) المستندة إلى لغة تعريف واجهة AIDL. يُنصح أيضًا بتوفير AIDL HAL للأجهزة التي لا تعمل بنظام التشغيل Android 13 ولا تخطط لتحديث صورة المورّد.
يتضمّن AOSP العديد من مكتبات المساعدة المصمَّمة لمساعدتك في تنفيذ AIDL HAL والانتقال من إصدارات HIDL HAL القديمة.
المصطلحات
في ما يلي المصطلحات التي يجب معرفتها قبل قراءة بقية مستندات سلامة نظام Android:
- health@2.1
- اختصار
android.hardware.health@2.1
تم إصدار الإصدار 1 من واجهة HIDL الخاصة بالصحة في Android 11. - health AIDL HAL
- اختصار
android.hardware.health
تم طرح الإصدار 1 من واجهة HAL الخاصة بـ AIDL الخاصة بالصحة في نظام Android 13. - الشاحن
- ملف تنفيذي يعمل أثناء شحن الهاتف في وضع الإيقاف ويعرض الرسوم المتحركة الخاصة بشحن الهاتف
- الاسترداد
- ملف تنفيذي يعمل في وضع الاسترداد ويجب أن يسترد معلومات البطارية.
- storaged
- برنامج خفي يسترد معلومات التخزين ويقدّمها إلى إطار العمل
الصحة في الإصدارَين 11 و12 من نظام التشغيل Android
في نظامَي التشغيل Android 11 و12، يعمل مكون الصحة على النحو الموضّح في الرسم البياني التالي:
[system]
| getService()
V
[health@2.1-service]
| getService(stub=true)
V
[ health@2.0-impl-2.1-<device>.so ]
| | (device-dependent linkage)
V V
+---------Helper libs for impl--------+ [libhealthd.device]
| [libhealthloop (uevent, wakealarm)] |
| [libhealth2impl (IHealth impl) ] |
| [libbatterymonitor (battery) ] |
+-------------------------------------+
بالنسبة إلى الأوضاع الأخرى:
[ charger ]
| getService() | (legacy code path)
V +-------------------------------------------------+
[health@2.1-service] |
| getService(stub=true) |
V |
[ health@2.0-impl-2.1-<device>.so ] |
| | (device-dependent linkage) |
V V |
+---------Helper libs for impl--------+ [libhealthd.device] |
| [libhealthloop (uevent, wakealarm)] | |
| [libhealth2impl (IHealth impl) ] | <---------------------------------+
| [libbatterymonitor (battery) ] |
+-------------------------------------+
[recovery]
| getService() w/o hwservicemanager
V
[ health@2.0-impl-2.1-<device>.so ]
| | (device-dependent linkage)
V V
+---------Helper libs for impl--------+ [libhealthd.device]
| [libhealthloop (uevent, wakealarm)] |
| [libhealth2impl (IHealth impl) ] |
| [libbatterymonitor (battery) ] |
+-------------------------------------+
اطّلِع على الرسم البياني المبسّط التالي للأوضاع المختلفة:
الشكل 1. بنية Health HIDL HAL 2.1 الأساسية
الصحة في Android 13
في نظام التشغيل Android 13، تم تقديم طبقة تجريد الأجهزة (HAL) لواجهة تعريف لغة AIDL الخاصة بالصحة. يوضّح الشكل 2 طريقة عمل مكوّن الصحة:
الشكل 2. بنية طبقة تجريد الأجهزة (HAL) الخاصة بواجهة تعريف لغة AIDL الخاصة بالصحة
واجهة HIDL HAL الإصدار 2.1
يتوافق الإصدار 2.1 من Health HAL مع الشحن في وضع إيقاف التشغيل، كما يوفّر المزيد من المعلومات حول البطارية.
توفّر الواجهة الرئيسية، IHealth، الوظائف الإضافية التالية
-
getHealthConfig
: لاسترداد إعدادات HAL هذه -
getHealthInfo_2_1
: ترقية إصدار ثانوي إلىgetHealthInfo
-
shouldKeepScreenOn
: لتحديد ما إذا كان يجب إبقاء الشاشة قيد التشغيل في وضع الشحن
بالإضافة إلى ذلك، يجب تنفيذ @2.1::IHealth
لتوفير الدعم لوظيفتَي @2.1::IHealthInfoCallback
وregisterCallback
وunregisterCallback
الموروثتَين. تعرض واجهة رد الاتصال الجديدة معلومات صحية للعميل باستخدام الدالة healthInfoChanged_2_1
بدلاً من الدالة healthInfoChanged
الموروثة.
يتم عرض بنية جديدة، @2.1::HealthInfo
، باستخدام عمليات رد الاتصال وgetHealthInfo_2_1
. يحتوي هذا البنية على معلومات إضافية عن سلامة الجهاز
متاحة من خلال الإصدار 2.0 من طبقة تجريد الأجهزة (HAL) الخاصة بخدمة Health، بما في ذلك:
- مستوى سعة البطارية
- وقت شحن البطارية بالكامل الآن (بالثواني)
- سعة تصميم الشحن الكامل للبطارية (بوحدة ميكرو أمبير في الساعة)
يعرض الشكل 3 مخطط UML للفئات المفيدة لتنفيذ طبقة تجريد الأجهزة (HAL) الخاصة بالصحة:
الشكل 3. مخطّط UML لطبقة تجريد الأجهزة (HAL) الخاصة بالصحة 2.1
للحصول على معلومات حول تنفيذ "خدمة الصحة" 2.1، يُرجى الاطّلاع على تنفيذ "خدمة الصحة" 2.1.
الإصدار 1 من واجهة AIDL HAL
يحتوي هذا القسم على معلومات حول الإصدار 1 من واجهة AIDL HAL.
التغييرات في واجهة برمجة التطبيقات
يتوافق الإصدار 1 من AIDL HAL مع واجهات برمجة تطبيقات مشابهة للإصدار 2.1 من HIDL HAL. مقارنةً بواجهة HIDL 2.1، تم تغيير ما يلي في واجهة برمجة التطبيقات:
- لا يتم نقل واجهات برمجة التطبيقات ذات الصلة بالشواحن التي تم تقديمها في HIDL HAL 2.1 إلى AIDL HAL. بما أنّ وظيفة الشحن في وضع إيقاف التشغيل لا تتوفّر إلا في القسم
/vendor
، ليس من الضروري استخدام واجهات برمجة التطبيقات على Vendor Interface. للتنفيذ السليم لميزة الشحن في وضع إيقاف التشغيل، يُرجى الاطّلاع على الشاحن. - تمت إزالة النوع
StorageAttribute
والحقول ذات الصلة لأنّها غير مستخدَمة. - تمت إضافة
chargerDockOnline
إلىHealthInfo
لتوفير إمكانية الشحن باستخدام قاعدة الشحن.
التنفيذ
يعرض الشكل 4 مخططًا بيانيًا للغة النمذجة الموحّدة (UML) للفئات المفيدة لتنفيذ AIDL HAL الخاص بالصحة:
الشكل 4. مخطّط UML لطبقة تجريد الأجهزة (HAL) الخاصة بالصحة AIDL
للحصول على معلومات حول تنفيذ خدمة AIDL الخاصة بالصحة، يُرجى الاطّلاع على تنفيذ Health AIDL HAL.
الاسترداد
يتوافق نظام التشغيل Android 13 مع binder في وضع الاسترداد. يسمح تثبيت خدمة Health AIDL للاسترداد بتشغيلها في وضع الاسترداد.
للحصول على معلومات حول تثبيت خدمة AIDL الخاصة بالصحة لاسترداد البيانات، يُرجى الاطّلاع على ما يلي:
شاحن
تم نقل وظيفة الشحن في وضع إيقاف التشغيل من /system
إلى /vendor
. بالنسبة إلى الأجهزة التي تعمل بنظام التشغيل Android 13، إذا كانت تتيح الشحن في وضع إيقاف التشغيل، يجب أن يتوافق ملف HAL الثنائي الخاص بالخدمة مع وضع الشاحن. لإجراء ذلك، يُرجى الرجوع إلى تنفيذ الشاحن.
خصائص نظام الشاحن
لم يعُد بإمكان الملف الثنائي charger
قراءة الخصائص ro.charger.*
في /vendor
. إذا كان جهازك يتضمّن أيًا من خصائص نظام ro.charger.*
، يُرجى الرجوع إلى خصائص النظام للشاحن.