سلامت سیستم اندروید

Android 13 شامل android.hardware.health AIDL HAL است، تبدیلی از health@2.1 HAL. این HAL جدید دارای مزایای زیر است:

  • APIهای استفاده نشده مرتبط با شارژر را حذف کنید
  • StorageAttribute و فیلدهای مرتبط استفاده نشده را حذف کنید
  • پشتیبانی از شارژ داک

Android 11 شامل android.hardware.health HAL 2.1، ارتقاء نسخه جزئی از health@2.0 HAL است. این HAL جدید دارای مزایای زیر است:

  • جداسازی تمیزتر بین چارچوب و کد فروشنده.
  • درجات آزادی بیشتر برای سفارشی سازی فروشنده در گزارش های اطلاعات سلامت.
  • اطلاعات سلامت دستگاه بیشتر از باتری.

مستندات اجرای Health 2.1 HAL به عنوان مرجع در این صفحه موجود است.

الزامات

این بخش شامل شرایط لازم برای اندروید 11، 12 و 13 یا بالاتر است.

دستگاه های دارای اندروید 11 و اندروید 12

دستگاه هایی که با Android 11 و 12 راه اندازی می شوند باید HAL 2.1 یا AIDL HAL را ارائه دهند. دستگاه‌هایی که با Android 11 یا 12 راه‌اندازی نمی‌شوند اما قصد دارند تصویر فروشنده را به نسخه 5 ماتریس سازگاری چارچوب هدف (Target Framework Compatibility Matrix) نسخه 5 (منتشر شده در Android 11) یا 6 (منتشر شده در Android 12) به‌روزرسانی کنند، باید اجرای 2.0 HAL موجود را حذف کنند و HAL 2.1 یا AIDL HAL را ارائه کنند. دستگاه‌هایی که با Android 11 راه‌اندازی نمی‌شوند و برنامه‌ای برای به‌روزرسانی تصویر فروشنده ندارند نیز توصیه می‌شود 2.1 یا AIDL HAL را ارائه کنند.

AOSP شامل چندین کتابخانه کمکی است که برای کمک به پیاده سازی HAL 2.1 و انتقال از HIDL HAL های قدیمی طراحی شده اند.

دستگاه‌های دارای اندروید ۱۳ و بالاتر

دستگاه‌هایی که با Android 13 راه‌اندازی می‌شوند باید AIDL HAL را ارائه کنند (و نباید HIDL HAL ارائه کنند). دستگاه‌هایی که با Android 13 راه‌اندازی نمی‌شوند اما قصد دارند تصویر فروشنده را به ماتریس سازگاری چارچوب هدف نسخه 7 (منتشر شده در Android 13) به‌روزرسانی کنند، باید اجرای HIDL HAL موجود را حذف کرده و AIDL HAL را ارائه کنند. دستگاه‌هایی که با Android 13 راه‌اندازی نمی‌شوند و برنامه‌ای برای به‌روزرسانی تصویر فروشنده ندارند نیز برای ارائه AIDL HAL توصیه می‌شود.

AOSP شامل چندین کتابخانه کمکی است که برای کمک به پیاده سازی AIDL HAL و انتقال از HIDL HAL های قدیمی طراحی شده اند.

اصطلاحات

در زیر شرایطی وجود دارد که باید قبل از خواندن بقیه اسناد سلامت سیستم اندروید بدانید:

Health@2.1
مخفف android.hardware.health@2.1 . نسخه ۱ Health HIDL در اندروید ۱۱ منتشر شد.
سلامتی AIDL HAL
مخفف android.hardware.health . نسخه 1 سلامتی AIDL HAL در اندروید 13 منتشر شد.
شارژر
قابل اجرا در حالت شارژ خارج از حالت که انیمیشن شارژ گوشی را نمایش می دهد.
بهبودی
قابل اجرا در حالت بازیابی که باید اطلاعات باتری را بازیابی کند.
ذخیره شده
Daemon که اطلاعات ذخیره سازی را بازیابی کرده و در اختیار فریم ورک قرار می دهد.

سلامتی در اندروید 11 و 12

در اندروید 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)      ] |
+-------------------------------------+

نمودار ساده شده زیر را برای حالت های مختلف ببینید:

زیرساخت بهداشت HIDL HAL 2.1

شکل 1. زیرساخت بهداشت HIDL HAL 2.1.

سلامت در اندروید 13

در اندروید 13 سلامت AIDL HAL معرفی شده است. شکل 2 نحوه عملکرد مؤلفه سلامت را شرح می دهد:

زیرساخت بهداشت AIDL HAL

شکل 2. زیرساخت بهداشت 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 ، با استفاده از callbacks و getHealthInfo_2_1 برگردانده می‌شود. این ساختار حاوی اطلاعات اضافی سلامت دستگاه است که از طریق health@2.0 HAL در دسترس است، از جمله:

  • سطح ظرفیت باتری
  • زمان پر شدن باتری اکنون (در ثانیه)
  • ظرفیت طراحی شارژ کامل باتری (به μAh)

شکل 3 یک نمودار UML از کلاس های مفید برای اجرای HAL سلامت را نشان می دهد:

نمودار سلامت 2.1 HAL UML

شکل 3. نمودار UML سلامت HAL 2.1.

برای کسب اطلاعات در مورد اجرای خدمات سلامت 2.1، به اجرای سلامت 2.1 مراجعه کنید.

رابط AIDL HAL نسخه 1

این بخش حاوی اطلاعاتی درباره رابط AIDL HAL نسخه 1 است.

API تغییر می کند

AIDL نسخه 1 HAL از APIهای مشابه HIDL 2.1 HAL پشتیبانی می کند. در مقایسه با رابط HIDL 2.1، موارد زیر در API تغییر کرده است:

  • API های مربوط به شارژر معرفی شده در HIDL HAL 2.1 به AIDL HAL منتقل نمی شوند. از آنجایی که عملکرد شارژ خارج از حالت فقط در پارتیشن /vendor موجود است، API در رابط فروشنده ضروری نیست. برای اجرای صحیح شارژ کردن حالت خاموش، شارژر را ببینید.
  • نوع StorageAttribute و فیلدهای مربوطه به دلیل استفاده نشده حذف می شوند.
  • chargerDockOnline برای پشتیبانی از شارژ داک به HealthInfo اضافه شده است.

پیاده سازی

شکل 4 یک نمودار UML از کلاس های مفید برای اجرای AIDL HAL بهداشتی را نشان می دهد:

نمودار سلامت AIDL HAL UML

شکل 4. نمودار سلامت AIDL HAL UML.

برای اطلاعات در مورد اجرای خدمات AIDL بهداشتی، به اجرای Health AIDL HAL مراجعه کنید.

بازیابی

اندروید 13 از بایندر در بازیابی پشتیبانی می کند. نصب سرویس Health AIDL به بازیابی به آن اجازه می دهد تا در حالت ریکاوری اجرا شود.

برای اطلاع از نصب سرویس AIDL سلامت تا ریکاوری به موارد زیر مراجعه کنید:

شارژر

عملکرد شارژ خارج از حالت از /system به /vendor منتقل می شود. برای دستگاه‌هایی که با Android 13 راه‌اندازی می‌شوند، اگر از شارژ کردن حالت خاموش پشتیبانی می‌کنند، باینری سرویس HAL باید از حالت شارژر پشتیبانی کند. برای این کار به نصب شارژر مراجعه کنید.

ویژگی های سیستم شارژر

ویژگی های ro.charger.* دیگر توسط charger باینری در /vendor قابل خواندن نیستند. اگر دستگاه شما دارای یکی از ویژگی های سیستم ro.charger.* است، به ویژگی های سیستم برای شارژر مراجعه کنید.

،

Android 13 شامل android.hardware.health AIDL HAL است، تبدیلی از health@2.1 HAL. این HAL جدید دارای مزایای زیر است:

  • APIهای استفاده نشده مرتبط با شارژر را حذف کنید
  • StorageAttribute و فیلدهای مرتبط استفاده نشده را حذف کنید
  • پشتیبانی از شارژ داک

Android 11 شامل android.hardware.health HAL 2.1، ارتقاء نسخه جزئی از health@2.0 HAL است. این HAL جدید دارای مزایای زیر است:

  • جداسازی تمیزتر بین چارچوب و کد فروشنده.
  • درجات آزادی بیشتر برای سفارشی سازی فروشنده در گزارش های اطلاعات سلامت.
  • اطلاعات سلامت دستگاه بیشتر از باتری.

مستندات اجرای Health 2.1 HAL به عنوان مرجع در این صفحه موجود است.

الزامات

این بخش شامل شرایط لازم برای اندروید 11، 12 و 13 یا بالاتر است.

دستگاه های دارای اندروید 11 و اندروید 12

دستگاه هایی که با Android 11 و 12 راه اندازی می شوند باید HAL 2.1 یا AIDL HAL را ارائه دهند. دستگاه‌هایی که با Android 11 یا 12 راه‌اندازی نمی‌شوند اما قصد دارند تصویر فروشنده را به نسخه 5 ماتریس سازگاری چارچوب هدف (Target Framework Compatibility Matrix) نسخه 5 (منتشر شده در Android 11) یا 6 (منتشر شده در Android 12) به‌روزرسانی کنند، باید اجرای 2.0 HAL موجود را حذف کنند و HAL 2.1 یا AIDL HAL را ارائه کنند. دستگاه‌هایی که با Android 11 راه‌اندازی نمی‌شوند و برنامه‌ای برای به‌روزرسانی تصویر فروشنده ندارند نیز توصیه می‌شود 2.1 یا AIDL HAL را ارائه کنند.

AOSP شامل چندین کتابخانه کمکی است که برای کمک به پیاده سازی HAL 2.1 و انتقال از HIDL HAL های قدیمی طراحی شده اند.

دستگاه‌های دارای اندروید ۱۳ و بالاتر

دستگاه‌هایی که با Android 13 راه‌اندازی می‌شوند باید AIDL HAL را ارائه کنند (و نباید HIDL HAL ارائه کنند). دستگاه‌هایی که با Android 13 راه‌اندازی نمی‌شوند اما قصد دارند تصویر فروشنده را به ماتریس سازگاری چارچوب هدف نسخه 7 (منتشر شده در Android 13) به‌روزرسانی کنند، باید اجرای HIDL HAL موجود را حذف کرده و AIDL HAL را ارائه کنند. دستگاه‌هایی که با Android 13 راه‌اندازی نمی‌شوند و برنامه‌ای برای به‌روزرسانی تصویر فروشنده ندارند نیز برای ارائه AIDL HAL توصیه می‌شود.

AOSP شامل چندین کتابخانه کمکی است که برای کمک به پیاده سازی AIDL HAL و انتقال از HIDL HAL های قدیمی طراحی شده اند.

اصطلاحات

در زیر شرایطی وجود دارد که باید قبل از خواندن بقیه اسناد سلامت سیستم اندروید بدانید:

Health@2.1
مخفف android.hardware.health@2.1 . نسخه ۱ Health HIDL در اندروید ۱۱ منتشر شد.
سلامتی AIDL HAL
مخفف android.hardware.health . نسخه 1 سلامتی AIDL HAL در اندروید 13 منتشر شد.
شارژر
قابل اجرا در حالت شارژ خارج از حالت که انیمیشن شارژ گوشی را نمایش می دهد.
بهبودی
قابل اجرا در حالت بازیابی که باید اطلاعات باتری را بازیابی کند.
ذخیره شده
Daemon که اطلاعات ذخیره سازی را بازیابی کرده و در اختیار فریم ورک قرار می دهد.

سلامتی در اندروید 11 و 12

در اندروید 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)      ] |
+-------------------------------------+

نمودار ساده شده زیر را برای حالت های مختلف ببینید:

زیرساخت بهداشت HIDL HAL 2.1

شکل 1. زیرساخت بهداشت HIDL HAL 2.1.

سلامت در اندروید 13

در اندروید 13 سلامت AIDL HAL معرفی شده است. شکل 2 نحوه عملکرد مؤلفه سلامت را شرح می دهد:

زیرساخت بهداشت AIDL HAL

شکل 2. زیرساخت بهداشت 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 ، با استفاده از callbacks و getHealthInfo_2_1 برگردانده می‌شود. این ساختار حاوی اطلاعات اضافی سلامت دستگاه است که از طریق health@2.0 HAL در دسترس است، از جمله:

  • سطح ظرفیت باتری
  • زمان پر شدن باتری اکنون (در ثانیه)
  • ظرفیت طراحی شارژ کامل باتری (به μAh)

شکل 3 یک نمودار UML از کلاس های مفید برای اجرای HAL سلامت را نشان می دهد:

نمودار سلامت 2.1 HAL UML

شکل 3. نمودار UML سلامت HAL 2.1.

برای کسب اطلاعات در مورد اجرای خدمات سلامت 2.1، به اجرای سلامت 2.1 مراجعه کنید.

رابط AIDL HAL نسخه 1

این بخش حاوی اطلاعاتی درباره رابط AIDL HAL نسخه 1 است.

API تغییر می کند

AIDL نسخه 1 HAL از APIهای مشابه HIDL 2.1 HAL پشتیبانی می کند. در مقایسه با رابط HIDL 2.1، موارد زیر در API تغییر کرده است:

  • API های مربوط به شارژر معرفی شده در HIDL HAL 2.1 به AIDL HAL منتقل نمی شوند. از آنجایی که عملکرد شارژ خارج از حالت فقط در پارتیشن /vendor موجود است، API در رابط فروشنده ضروری نیست. برای اجرای صحیح شارژ کردن حالت خاموش، شارژر را ببینید.
  • نوع StorageAttribute و فیلدهای مربوطه به دلیل استفاده نشده حذف می شوند.
  • chargerDockOnline برای پشتیبانی از شارژ داک به HealthInfo اضافه شده است.

پیاده سازی

شکل 4 یک نمودار UML از کلاس های مفید برای اجرای AIDL HAL بهداشتی را نشان می دهد:

نمودار سلامت AIDL HAL UML

شکل 4. نمودار سلامت AIDL HAL UML.

برای اطلاعات در مورد اجرای خدمات AIDL بهداشتی، به اجرای Health AIDL HAL مراجعه کنید.

بازیابی

اندروید 13 از بایندر در بازیابی پشتیبانی می کند. نصب سرویس Health AIDL به بازیابی به آن اجازه می دهد تا در حالت ریکاوری اجرا شود.

برای اطلاع از نصب سرویس AIDL سلامت تا ریکاوری به موارد زیر مراجعه کنید:

شارژر

عملکرد شارژ خارج از حالت از /system به /vendor منتقل می شود. برای دستگاه‌هایی که با Android 13 راه‌اندازی می‌شوند، اگر از شارژ کردن حالت خاموش پشتیبانی می‌کنند، باینری سرویس HAL باید از حالت شارژر پشتیبانی کند. برای این کار به نصب شارژر مراجعه کنید.

ویژگی های سیستم شارژر

ویژگی های ro.charger.* دیگر توسط charger باینری در /vendor قابل خواندن نیستند. اگر دستگاه شما دارای یکی از ویژگی های سیستم ro.charger.* است، به ویژگی های سیستم برای شارژر مراجعه کنید.