يتضمن 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
غير المستخدمة والحقول ذات الصلة - دعم شحن قفص الاتهام.
متطلبات
الأجهزة التي تعمل بنظام أندرويد 9 وأندرويد 10
يجب أن توفر الأجهزة التي يتم تشغيلها باستخدام Android 9 2.x HAL (ويجب ألا توفر 1.0 HAL) أو AIDL HAL. يجب على الأجهزة التي لا تعمل بنظام Android 9 ولكنها تخطط لتحديث صورة البائع إلى الإصدار 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 ولكنها تخطط لتحديث صورة البائع إلى الإصدار 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 ولكنها تخطط لتحديث صورة البائع إلى الإصدار 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
. يشير إلى إصدار HIDL HAL الصحي 1.0 الذي تم إصداره في Android 8.0. - health@2.0 : اختصار
android.hardware.health@2.0
. يشير إلى إصدار HIDL HAL الصحي 2.0 الذي تم إصداره في Android 9. - health@2.1 : اختصار
android.hardware.health@2.1
. يشير إلى إصدار HIDL HAL الصحي 2.1 الذي تم إصداره في 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
.
الصحة في أندرويد 9
في Android 9، يعمل مكون الصحة كما هو مفصل في الرسم البياني التالي:
الشكل 3 . الصحة في أندرويد 9
يحاول إطار العمل استرداد خدمة health@2.0 من hwservicemanager
. إذا فشلت، فسيتم الاتصال بـ health@1.0 (في Android 8.x). يتم الاحتفاظ بمسار التعليمات البرمجية القديم بحيث تكون صورة نظام Android 9 متوافقة مع صورة بائع Android 8.x. لا يقوم إطار العمل باسترداد المعلومات من كلا هاتين الشبكتين لأنه يمكن وجود إصدار خدمة واحد فقط (1.0 أو 2.0) على الجهاز.
للأوضاع الأخرى:
الشكل 4. الصحة في Android 9، وضع الشحن والاسترداد خارج الوضع.
الصحة في أندرويد 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.
الصحة في أندرويد 13
في Android 13، تم تقديم AIDL HAL الصحي. يعمل مكون الصحة كما هو مفصل في الرسم البياني التالي:
الشكل 6. البنية التحتية الصحية AIDL HAL.
واجهة هيدل هال 2.0
يوفر health@2.0 HAL نفس الوظيفة لإطار العمل مثل البرنامج الخفي healthd القديم. كما أنه يوفر واجهات برمجة التطبيقات (APIs) المشابهة لما تم توفيره مسبقًا كخدمة ربط (على سبيل المثال IBatteryPropertiesRegistrar ).
توفر الواجهة الرئيسية IHealth الوظائف التالية:
-
registerCallback
، ليحل محلIBatteryPropertiesRegistrar.registerListener
-
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/لاسلكي، والتيار، والجهد، وما إلى ذلك)
- معلومات البطارية (الوجود، ومستوى البطارية، والتيار، والجهد، والشحن، والتكنولوجيا، وما إلى ذلك)
- معلومات التخزين (معلومات جهاز التخزين، إحصائيات القرص)
للحصول على معلومات حول تنفيذ الخدمة الصحية 2.0، راجع تنفيذ الخدمة الصحية 2.0 .
واجهة هيدل هال 2.1
يدعم 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. مخطط الصحة HAL 2.1 UML.
للحصول على معلومات حول تنفيذ الخدمة الصحية 2.1، راجع تنفيذ الخدمة الصحية 2.1 .
واجهة AIDL HAL الإصدار 1
تغييرات واجهة برمجة التطبيقات
يدعم الإصدار 1 من AIDL HAL واجهات برمجة التطبيقات المشابهة لـ HIDL 2.1 HAL. بالمقارنة مع واجهة HIDL 2.1، تم تغيير ما يلي في واجهة برمجة التطبيقات:
- لا يتم نقل واجهات برمجة التطبيقات المتعلقة بالشاحن المقدمة في HIDL HAL 2.1 إلى AIDL HAL. نظرًا لأن وظيفة الشحن خارج الوضع موجودة فقط في القسم
/vendor
، فإن واجهات برمجة التطبيقات (APIs) الموجودة على واجهة المورد ليست ضرورية. لتنفيذ الشحن خارج الوضع بشكل صحيح، راجع الشاحن أدناه. - تتم إزالة نوع
StorageAttribute
والحقول ذات الصلة لأنها غير مستخدمة. - تمت إضافة
chargerDockOnline
إلىHealthInfo
لدعم الشحن.
تطبيق
راجع مخطط UML التالي للتعرف على الفئات المفيدة لتطبيق HAL الصحي:
الشكل 8. مخطط الصحة AIDL HAL UML.
للحصول على معلومات حول تنفيذ خدمة AIDL الصحية، راجع تنفيذ خدمة AIDL HAL الصحية .
استعادة
يدعم Android 13 الموثق في الاسترداد. يتيح تثبيت خدمة Health AIDL للاسترداد إمكانية تشغيلها في وضع الاسترداد.
للحصول على معلومات حول تثبيت خدمة AIDL الصحية للاسترداد، راجع ما يلي:
شاحن
يتم نقل وظيفة الشحن خارج الوضع من /system
إلى /vendor
. بالنسبة للأجهزة التي تعمل بنظام التشغيل Android 13، إذا كانت تدعم الشحن خارج الوضع، فيجب أن يدعم ثنائي خدمة HAL وضع الشاحن. للقيام بذلك، راجع تنفيذ الشاحن .
خصائص نظام الشاحن
الخصائص ro.charger.*
لم تعد قابلة للقراءة بواسطة charger
الثنائي في /vendor
. إذا كان جهازك يحتوي على أي من خصائص النظام ro.charger.*
المعينة، فارجع إلى خصائص النظام الخاصة بالشاحن .