حالة نظام Android

يتضمّن نظام Android 13 android.hardware.health AIDL HAL، وهي عملية تحويل من health@2.1 HAL. توفّر واجهة HAL الجديدة التالية المزايا:

  • إزالة واجهات برمجة التطبيقات غير المستخدَمة المرتبطة بالشاحن
  • إزالة StorageAttribute والحقول ذات الصلة غير المستخدَمة
  • أن تتيح الشحن من خلال قاعدة الإرساء

يتضمّن نظام التشغيل Android 11 android.hardware.health HAL 2.1، وهو ترقية طفيفة للإصدار health@2.0 HAL. توفّر واجهة HAL الجديدة التالية المزايا:

  • فصل أكثر وضوحًا بين إطار العمل ورمز المورّد
  • درجات أكبر من الحرية لتخصيص المورّد في تقارير المعلومات الصحية
  • معلومات أكثر حول حالة الجهاز، وليس البطارية فقط

تتوفّر في هذه الصفحة مستندات تنفيذ Health 2.1 HAL كمرجع.

المتطلبات

يحتوي هذا القسم على متطلبات نظام التشغيل Android 11 و12 و13 أو الإصدارات الأحدث.

الأجهزة التي تعمل بالإصدارَين 11 و12 من نظام التشغيل Android

يجب أن توفّر الأجهزة التي تعمل بالإصدارَين 11 و12 من نظام التشغيل Android حزمة برمجة التطبيقات لواجهة HAL‏ 2.1 أو حزمة برمجة التطبيقات لواجهة HAL لبروتوكول AIDL. بالنسبة إلى الأجهزة التي لا يتم إطلاقها باستخدام الإصدار 11 أو 12 من نظام التشغيل Android ولكن يتم التخطيط لتحديث ملف تعريف المورّد إلى الإصدار 5 من "مصفوفة توافق إطار العمل المستهدَف" (تم طرحه في الإصدار 11 من نظام التشغيل Android) أو الإصدار 6 (تم طرحه في الإصدار 12 من نظام التشغيل Android)، يجب إزالة تطبيقات HAL الحالية من الإصدار 2.0 وتوفير تطبيقات HAL من الإصدار 2.1 أو تطبيقات HAL من واجهة برمجة التطبيقات لتعريف البيانات (AIDL). ننصحك أيضًا بتوفير حزمة HAL 2.1 أو حزمة AIDL HAL للأجهزة التي لا تعمل بنظام التشغيل Android 11 والتي لا يتم التخطيط لتحديث صورة المورّد لها.

يتضمّن AOSP عدة مكتبات مساعدة مصمّمة لمساعدتك في تنفيذ واجهة برمجة التطبيقات 2.1 HAL والانتقال من واجهات برمجة التطبيقات HIDL HAL القديمة.

الأجهزة التي تعمل بالإصدار Android 13 والإصدارات الأحدث

يجب أن توفّر الأجهزة التي تعمل بالإصدار 13 من نظام التشغيل Android حزمة AIDL HAL (ويجب ألّا توفّر حزمة HIDL HAL). بالنسبة إلى الأجهزة التي لا تعمل بالإصدار 13 من نظام التشغيل Android ولكنّها مخطّط لها تحديث صورة المورّد إلى الإصدار 7 من "جدول توافق إطار العمل" المستهدف (الذي تم طرحه في الإصدار 13 من نظام التشغيل Android)، يجب إزالة عمليات تنفيذ HIDL HAL الحالية وتوفير AIDL HAL. ننصح أيضًا باستخدام حزمة 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 من Health AIDL HAL في Android 13.
شاحن
ملف تنفيذي يعمل في وضع الشحن غير النشط ويعرض المتحرك لشحن الهاتف
recovery
ملف قابل للتنفيذ يعمل في وضع الاسترداد ويجب أن يسترجع معلومات البطارية:
storaged
خدمة خلفية تسترجع معلومات التخزين وتوفّرها للإطار العمل

تطبيق "صحة Google" في Android 11 و12

في نظامَي التشغيل 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)      ] |
+-------------------------------------+

اطّلِع على الرسم البياني المبسّط التالي للأوضاع المختلفة:

البنية الأساسية لـ Health HIDL HAL 2.1

الشكل 1: بنية Health HIDL HAL 2.1 الأساسية

ميزات "صحة Google" في Android 13

في Android 13، تمّ طرح Health AIDL HAL. يوضّح الشكل 2 آلية عمل المكوّن health:

البنية الأساسية لـ Health AIDL HAL

الشكل 2: بنية Health AIDL HAL الأساسية

واجهة HIDL HAL 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، بما في ذلك:

  • مستوى سعة البطارية
  • وقت شحن البطارية بالكامل الآن (بالثواني)
  • سعة الشحن الكاملة للبطارية (بالميكرو أمبير في الساعة)

يعرض الشكل 3 مخطّطًا بيانيًا لـ UML للصفوف المفيدة لتنفيذ HAL في مجال الرعاية الصحية:

مخطّط UML لـ Health 2.1 HAL

الشكل 3: مخطّط UML لـ Health HAL 2.1

للحصول على معلومات عن تنفيذ Health 2.1، يُرجى الاطّلاع على مقالة تنفيذ Health 2.1.

الإصدار 1 من واجهة AIDL HAL

يحتوي هذا القسم على معلومات حول الإصدار 1 من واجهة AIDL HAL.

التغييرات في واجهة برمجة التطبيقات

يتوافق الإصدار 1 من واجهة برمجة التطبيقات لنظام التشغيل Android Interface Definition Language (AIDL) مع واجهات برمجة تطبيقات مشابهة لواجهة برمجة التطبيقات HIDL 2.1. مقارنةً بواجهة HIDL 2.1، تم إجراء التغييرات التالية في واجهة برمجة التطبيقات:

  • لم يتم نقل واجهات برمجة التطبيقات ذات الصلة بالشاحن والمُقدَّمة في HIDL HAL 2.1 إلى AIDL HAL. بما أنّ وظيفة الشحن في وضع الإيقاف لا تتوفّر إلا في القسم /vendor، ليست هناك حاجة إلى واجهات برمجة التطبيقات في واجهة المورّد. لتنفيذ ميزة "الشحن في وضع الإيقاف" بشكلٍ صحيح، يُرجى الاطّلاع على الشاحن.
  • تتم إزالة النوع StorageAttribute والحقول ذات الصلة لأنّها غير مستخدَمة.
  • تمت إضافة chargerDockOnline إلى HealthInfo لإتاحة شحن الجهاز من خلال قاعدة الإرساء.

التنفيذ

يعرض الشكل 4 مخطّطًا بيانيًا لـ UML للصفوف المفيدة لتنفيذ HAL لواجهة برمجة التطبيقات AIDL للصحة:

مخطّط UML لـ Health AIDL HAL

الشكل 4: مخطّط UML لـ Health AIDL HAL

للحصول على معلومات عن تنفيذ خدمة Health AIDL، يُرجى الاطّلاع على مقالة Implementing Health AIDL HAL (تنفيذ Health AIDL HAL).

الاسترداد

يتيح نظام Android 13 استخدام أداة الربط في وضع الاسترداد. يؤدي تثبيت خدمة Health AIDL في وضع الاسترداد إلى تشغيلها في هذا الوضع.

للحصول على معلومات عن تثبيت خدمة Health AIDL في وضع الاسترداد، يُرجى الاطّلاع على الخطوات التالية:

شاحن

تم نقل وظيفة الشحن في وضع الإيقاف من /system إلى /vendor. بالنسبة إلى الأجهزة التي تعمل بنظام Android 13، إذا كانت تتيح الشحن في وضع الإيقاف، يجب أن يتيح ملف HAL الثنائي وضع الشاحن. لإجراء ذلك، يُرجى الرجوع إلى تنفيذ الشاحن.

خصائص نظام الشاحن

لم تعُد السمات ro.charger.* قابلة للقراءة من خلال الملف الثنائي charger في /vendor. إذا كان جهازك يتضمّن أيًا من خصائص نظام ro.charger.*، يُرجى الرجوع إلى خصائص النظام للشاحن.