يتضمن Android 9 android.hardware.health
HAL 2.0 ، ترقية إصدار رئيسي من health@1.0 HAL. يتمتع HAL الجديد بالمزايا التالية:
- فصل أوضح بين إطار العمل ورمز البائع.
-
healthd
غير الضروري. - درجات أكبر من الحرية لتخصيص البائع في تقارير المعلومات الصحية.
- المزيد من المعلومات الصحية للجهاز بخلاف البطارية فقط.
يتضمن Android 11 android.hardware.health
HAL 2.1 ، ترقية إصدار ثانوي من health@2.0 HAL. يتمتع HAL الجديد بالمزايا التالية:
- أسهل في التنفيذ
- توافق أفضل مع 2.0 HAL APIs الموجودة
- فصل أفضل للثلاثية في كود الشحن في وضع إيقاف التشغيل
- دعم أفضل للإطار للإشارة إلى صحة بطارية الجهاز
يتضمن Android 13 android.hardware.health
AIDL HAL ، وهو تحويل من health@2.1 HAL. يتمتع HAL الجديد بالمزايا التالية:
- إزالة واجهات برمجة التطبيقات المتعلقة بالشاحن غير المستخدمة
- قم بإزالة
StorageAttribute
غير المستخدمة والحقول ذات الصلة - دعم شحن قفص الاتهام.
متطلبات
الأجهزة التي تعمل بنظام Android 9 و Android 10
يجب أن توفر الأجهزة التي يتم تشغيلها مع Android 9 2.x HAL (ويجب ألا توفر 1.0 HAL) أو AIDL HAL. يجب أن تزيل الأجهزة التي لا تعمل مع Android 9 ولكنها تخطط لتحديث صورة البائع إلى Target Framework Compatibility Matrix Version 3 (التي تم إصدارها في Android 9) تطبيقات 1.0 HAL الحالية وتوفر 2.x HAL أو AIDL HAL.
يتضمن AOSP مكتبات مساعدة متعددة مصممة لمساعدتك في تنفيذ 2.0 HAL والانتقال من 1.0 HAL القديم.
الأجهزة التي تعمل بنظام Android 11 و Android 12
يجب أن توفر الأجهزة التي تعمل بنظام Android 11 الإصدار 2.1 HAL (ويجب ألا توفر 1.0 أو 2.0 HAL) أو AIDL HAL. الأجهزة التي لا تعمل مع Android 11 ولكن تخطط لتحديث صورة البائع إلى Target Framework Compatibility Matrix الإصدار 5 (تم إصدارها في Android 11) يجب أن تزيل تطبيقات 2.0 HAL الحالية وتوفر 2.1 HAL أو AIDL HAL. يوصى أيضًا بالأجهزة التي لا يتم تشغيلها مع Android 11 ولا تخطط لتحديث صورة البائع لتوفير 2.1 HAL.
يتضمن AOSP مكتبات مساعدة متعددة مصممة لمساعدتك في تنفيذ 2.1 HAL والانتقال من 1.0 HAL القديم.
الأجهزة التي تعمل بنظام Android 13 وما فوق
يجب أن توفر الأجهزة التي تعمل بنظام Android 13 AIDL HAL (ويجب ألا توفر HIDL HAL). يجب أن تزيل الأجهزة التي لا تعمل مع Android 13 ولكنها تخطط لتحديث صورة البائع إلى Target Framework Compatibility Matrix الإصدار 7 (تم إصدارها في Android 13) تطبيقات HIDL HAL الحالية وتوفر AIDL HAL. يوصى أيضًا بالأجهزة التي لا تعمل بنظام Android 13 ولا تخطط لتحديث صورة البائع لتوفير AIDL HAL.
يجب ألا توفر الأجهزة HIDL 1.0 HAL.
يتضمن AOSP مكتبات مساعدة متعددة مصممة لمساعدتك في تنفيذ AIDL HAL والانتقال من HIDL HALs القديمة.
المصطلح
- health@1.0 : اختصار
android.hardware.health@1.0
. يشير إلى الإصدار 1.0 من HIDL HAL الصحي الذي تم إصداره في Android 8.0. - health@2.0 : اختصار
android.hardware.health@2.0
. يشير إلى الإصدار 2.0 من HIDL HAL الصحي الذي تم إصداره في Android 9. - health@2.1 : اختصار
android.hardware.health@2.1
. يشير إلى الإصدار 2.1 HIDL HAL الصحي الذي تم إصداره في Android 11. - health AIDL HAL : اختصار لـ
android.hardware.health
.- تم إصدار الإصدار 1 في Android 13.
- الشاحن : قابل للتنفيذ يعمل في وضع إيقاف الشحن يعرض الرسوم المتحركة لشحن الهاتف.
- الاسترداد : الملف القابل للتنفيذ يعمل في وضع الاسترداد الذي يجب أن يسترد معلومات البطارية.
- healthd : برنامج خفي قديم يعمل في Android يسترد المعلومات المتعلقة بالصحة ويوفرها إلى إطار العمل.
- storaged : برنامج خفي يعمل في Android يسترد معلومات التخزين ويوفرها للإطار.
الصحة في Android 8.x
في Android 8.x ، يعمل المكون الصحي كما هو مفصل في الرسم التخطيطي التالي:
الشكل 1 . الصحة في Android 8.x
في هذا الرسم البياني:
- يتم استخدام استدعاء Binder واحد (1) ومكالمة hwbinder واحدة (1) بواسطة إطار العمل للتواصل مع الأجهزة.
- روابط ثابتة لـ
healthd
لـlibhealthd_android
وlibbatterymonitor
وlibbatteryservice
. - health@1.0-impl بشكل ثابت روابط لـ
libhealthd. BOARD
.
يمكن لكل لوحة تخصيص libhealthd. BOARD
يتم تحديده في وقت الإنشاء ما هو رابط الشاحن و health@1.0-impl ورابط الاسترداد.
لأوضاع أخرى:
الشكل 2. الصحة في Android 8.x ، وضع الشحن والاسترداد في وضع الإيقاف
- شاحن روابط ثابتة إلى
libhealthd. BOARD
وlibhealthd_charger
وlibbatterymonitor
. - الانتعاش روابط ثابتة إلى
libhealthd. BOARD
وlibbatterymonitor
.
الصحة في Android 9
في Android 9 ، يعمل المكون الصحي كما هو مفصل في الرسم التخطيطي التالي:
الشكل 3 . الصحة في Android 9
يحاول إطار العمل استرداد خدمة health@2.0 من hwservicemanager
. إذا فشل ، يتم الاتصال بـ health@1.0 (في Android 8.x). يتم الاحتفاظ بمسار الرمز القديم حتى تتوافق صورة نظام Android 9 مع صورة بائع Android 8.x. لا يسترد إطار العمل المعلومات من كلا HALs لأنه يمكن وجود إصدار خدمة واحد فقط (1.0 أو 2.0) على الجهاز.
لأوضاع أخرى:
الشكل 4. الصحة في Android 9 ، وضع الشحن خارج الوضع والاسترداد
الصحة في Android 11
في Android 11 ، يعمل المكون الصحي كما هو مفصل في الرسم التخطيطي التالي:
[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) ] |
+-------------------------------------+
إذا لم يكن تنفيذ health 2.1 موجودًا ، فسيعود النظام إلى مسار الكود القديم كما هو موضح في الأقسام السابقة
لأوضاع أخرى:
[ 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) ] |
+-------------------------------------+
انظر الرسم التخطيطي المبسط التالي لأوضاع مختلفة:
الشكل 5. البنية التحتية الصحية HAL 2.1
الصحة في Android 13
في Android 13 ، تم تقديم health AIDL HAL. يعمل المكون الصحي على النحو المفصل في الرسم البياني التالي:
الشكل 6. البنية التحتية الصحية AIDL HAL
HIDL HAL واجهة 2.0
يوفر health@2.0 HAL الوظيفة نفسها لإطار العمل مثل البرنامج الخفي healthd القديم. كما أنه يوفر واجهات برمجة التطبيقات التي تشبه ما قدمته healthd سابقًا كخدمة ربط (أي IBatteryPropertiesRegistrar ).
توفر الواجهة الرئيسية ، IHealth ، الوظائف التالية:
-
IBatteryPropertiesRegistrar.registerListener
ليحل محلregisterCallback
-
unregisterCallback
، لاستبدالIBatteryPropertiesRegistrar.unregisterListener
-
update
، لاستبدالIBatteryPropertiesRegistrar.scheduleUpdate
- يتم استبدال
IBatteryPropertiesRegistrar.getProperties
بما يلي:-
getChargeCounter
-
getCurrentNow
-
getCurrentAverage
-
getCapacity
-
getEnergyCounter
-
getChargeStatus
-
getHealthInfo
-
بالإضافة إلى ذلك ، يوفر IHealth
واجهات برمجة التطبيقات الجديدة التالية storaged
لاسترداد المعلومات المتعلقة بالتخزين الخاصة بالبائع:
-
getStorageInfo
-
getDiskStats
يتم إرجاع بنية جديدة ، @2.0::HealthInfo
، عبر عمليات الاسترجاعات و getHealthInfo
. تحتوي هذه البنية على جميع معلومات صحة الجهاز المتاحة عبر health@2.0 HAL ، بما في ذلك:
- معلومات الشحن (تيار متردد / USB / لاسلكي ، تيار ، جهد كهربائي ، إلخ.)
- معلومات البطارية (الوجود ، مستوى البطارية ، التيار ، الجهد ، الشحن ، التكنولوجيا ، إلخ.)
- معلومات التخزين (معلومات جهاز التخزين ، إحصائيات القرص)
للحصول على معلومات حول تنفيذ Health service 2.0 ، راجع تنفيذ Health 2.0 .
HIDL HAL interface 2.1.2 تحديث
يدعم health@2.1 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
. تحتوي هذه البنية على معلومات إضافية عن صحة الجهاز متاحة عبر health@2.0 HAL ، بما في ذلك:
- مستوى سعة البطارية
- وقت شحن البطارية حتى الاكتمال الآن (بالثواني)
- سعة تصميم الشحن الكامل للبطارية (في μAh)
راجع مخطط UML التالي للفئات المفيدة لتطبيق HAL الصحي:
الشكل 7. Health HAL 2.1 مخطط UML
للحصول على معلومات حول تنفيذ الخدمة الصحية 2.1 ، راجع تنفيذ الصحة 2.1 .
إصدار واجهة AIDL HAL 1
يتغير API
يدعم الإصدار 1 من AIDL HAL واجهات برمجة تطبيقات مماثلة لـ HIDL 2.1 HAL. مقارنة بواجهة HIDL 2.1 ، تم تغيير ما يلي في واجهة برمجة التطبيقات:
- لا يتم نقل واجهات برمجة التطبيقات المتعلقة بالشاحن والمقدمة في HIDL HAL 2.1 إلى AIDL HAL. نظرًا لأن وظيفة الشحن في وضع إيقاف التشغيل تعمل فقط على قسم
/vendor
، فإن واجهات برمجة التطبيقات على واجهة البائع ليست ضرورية. لتنفيذ الشحن في وضع إيقاف التشغيل بشكل صحيح ، انظر الشاحن أدناه. - تتم إزالة Type
StorageAttribute
والحقول ذات الصلة لأنها غير مستخدمة. - تم إضافة
chargerDockOnline
إلىHealthInfo
لدعم شحن قفص الاتهام.
تطبيق
راجع مخطط UML التالي للفئات المفيدة لتطبيق HAL الصحي:
الشكل 8. مخطط الصحة AIDL HAL UML
للحصول على معلومات حول تنفيذ خدمة AIDL الصحية ، راجع تنفيذ Health AIDL HAL .
استعادة
يدعم Android 13 Binder في الاسترداد. يسمح تثبيت خدمة Health AIDL للاسترداد بتشغيلها في وضع الاسترداد.
للحصول على معلومات حول تثبيت خدمة AIDL الصحية للاسترداد ، راجع ما يلي:
شاحن
يتم نقل وظيفة الشحن في وضع إيقاف التشغيل من /system
إلى /vendor
. بالنسبة للأجهزة التي تعمل بنظام Android 13 ، إذا كانت تدعم الشحن في وضع إيقاف التشغيل ، فيجب أن يدعم ثنائي خدمة HAL وضع الشاحن. للقيام بذلك ، راجع تطبيق الشاحن .
خصائص نظام الشاحن
لم تعد الخصائص ro.charger.*
قابلة للقراءة بواسطة ثنائي charger
في /vendor
. إذا كان جهازك يحتوي على أي من ميزات نظام ro.charger.*
تم تعيين خصائص النظام ، فارجع إلى خصائص النظام للشاحن .