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.
דרישות
בקטע הזה מפורטות הדרישות ל-Android מגרסה 11, 12 ו-13 ואילך.
מכשירים עם Android 11 ו-Android 12
מכשירים שמופעלים עם Android 11 ו-Android 12 חייבים לספק את HAL 2.1 או את AIDL HAL. מכשירים שלא הושקו עם Android 11 או 12, אבל מתוכננים לעדכן את תמונת הספק לגרסה 5 (שפורסמה ב-Android 11) או 6 (שפורסמה ב-Android 12) של מטריצת התאימות של מסגרת היעד, צריכים להסיר את ההטמעות הקיימות של HAL 2.0 ולספק את HAL 2.1 או את AIDL HAL. במכשירים שלא מופעלת בהם מערכת Android 11 ואין תוכניות לעדכן את תמונת הספק, מומלץ גם לספק את גרסה 2.1 או את AIDL HAL.
AOSP כולל כמה ספריות עזר שנועדו לעזור לכם להטמיע את HAL 2.1 ולעבור מ-HAL HIDL הישנים.
מכשירים עם Android מגרסה 13 ואילך
מכשירים שהושקו עם Android 13 חייבים לספק את AIDL HAL (ואסור להם לספק HIDL HAL). במכשירים שלא מופעלת בהם Android 13, אבל מתוכנן עדכון של תמונת הספק לגרסה 7 של Target Framework Compatibility Matrix (שפורסמה ב-Android 13), צריך להסיר הטמעות קיימות של HIDL HAL ולספק את AIDL HAL. במכשירים שלא מופעלים עם Android 13 ושלא מתוכננים לעדכן את תמונת הספק, מומלץ גם לספק את AIDL HAL.
AOSP כולל כמה ספריות עזר שנועדו לעזור לכם להטמיע את AIDL HAL ולעבור מ-HIDL HALs הישנים.
טרמינולוגיה
לפני שקוראים את שאר התיעוד בנושא תקינות המערכת של Android, כדאי להכיר את המונחים הבאים:
- health@2.1
- קיצור של
android.hardware.health@2.1
. גרסה 1 של health HIDL פורסמה ב-Android 11. - health AIDL HAL
- קיצור של
android.hardware.health
. גרסה 1 של Health AIDL HAL פורסמה ב-Android 13. - מטען
- קובץ הפעלה שפועל בטעינה במצב כבוי ומציג את האנימציה של טעינת הטלפון.
- recovery
- קובץ הפעלה שפועל במצב שחזור וצריך לאחזר מידע על הסוללה.
- storaged
- דמון שמאחזר מידע על האחסון ומספק אותו למסגרת.
נתוני בריאות ב-Android 11 וב-Android 12
ב-Android 11 וב-Android 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, הושק AIDL HAL של בריאות. באיור 2 אפשר לראות איך פועל רכיב התקינות:
איור 2. תשתית Health AIDL HAL.
ממשק HIDL HAL 2.1
HAL health@2.1 תומך בטעינה במצב כבוי ומספק מידע נוסף על הסוללה.
הממשק הראשי, IHealth, כולל את הפונקציות הנוספות הבאות
-
getHealthConfig
: כדי לאחזר את ההגדרה של ה-HAL הזה -
getHealthInfo_2_1
: שדרוג גרסה משנית ל-getHealthInfo
-
shouldKeepScreenOn
: כדי לקבוע אם המסך צריך להישאר דולק במצב טעינה
בנוסף, נדרשת הטמעה של @2.1::IHealth
כדי לתמוך ב-@2.1::IHealthInfoCallback
עבור הפונקציות registerCallback
ו-unregisterCallback
שמועברות בירושה. ממשק הקריאה החוזרת החדש מחזיר מידע על תקינות הלקוח באמצעות הפונקציה healthInfoChanged_2_1
שלו במקום הפונקציה healthInfoChanged
שעברה בירושה.
מבנה חדש, @2.1::HealthInfo
, מוחזר באמצעות קריאות חוזרות (callback) ו-getHealthInfo_2_1
. המבנה הזה מכיל מידע נוסף על תקינות המכשיר שזמין דרך health@2.0 HAL, כולל:
- רמת הקיבולת של הסוללה
- זמן הטעינה של הסוללה עד לטעינה מלאה (בשניות)
- קיבולת הסוללה המתוכננת לטעינה מלאה (ב-μAh)
איור 3 מציג דיאגרמת UML של המחלקות ששימושיות להטמעה של Health HAL:
איור 3. דיאגרמת UML של Health HAL 2.1.
מידע על הטמעה של שירות Health 2.1 זמין במאמר בנושא הטמעה של Health 2.1.
גרסה 1 של ממשק AIDL HAL
בקטע הזה מופיע מידע על גרסה 1 של ממשק AIDL HAL.
שינויים ב-API
HAL ב-AIDL גרסה 1 תומך בממשקי API דומים ל-HAL ב-HIDL גרסה 2.1. בהשוואה לממשק HIDL 2.1, בוצעו השינויים הבאים ב-API:
- ממשקי API שקשורים למטען שהוצגו ב-HIDL HAL 2.1 לא מועברים ל-AIDL HAL. הפונקציונליות של טעינה במצב כבוי קיימת רק במחיצה
/vendor
, ולכן אין צורך בממשקי API בממשק הספק. כדי להטמיע טעינה במצב כבוי בצורה נכונה, אפשר לעיין במאמר בנושא מטען. - השדה Type (סוג) והשדות שקשורים אליו הוסרו כי הם לא בשימוש.
StorageAttribute
-
chargerDockOnline
נוסף ל-HealthInfo
כדי לתמוך בטעינה במעמד.
הטמעה
איור 4 מציג דיאגרמת UML של המחלקות ששימושיות להטמעה של AIDL HAL בתחום הבריאות:
איור 4. דיאגרמת UML של Health AIDL HAL.
מידע על הטמעה של שירות AIDL לבריאות זמין במאמר בנושא הטמעה של Health AIDL HAL.
שחזור
Android 13 תומך ב-binder בשחזור. התקנת שירות Health AIDL לשחזור מאפשרת לו לפעול במצב שחזור.
למידע על התקנת שירות AIDL של Health לשחזור, אפשר לעיין במאמרים הבאים:
מטען
הפונקציונליות של טעינה במצב כבוי הועברה מ-/system
אל /vendor
. במכשירים שמושקים עם Android 13, אם הם תומכים בטעינה במצב כבוי, קובץ הבינארי של שירות ה-HAL חייב לתמוך במצב מטען. הוראות מפורטות מופיעות במאמר בנושא הטמעה של מטען.
מאפייני מערכת של מטען
המאפיינים ro.charger.*
כבר לא ניתנים לקריאה על ידי הקובץ הבינארי charger
ב-/vendor
. אם במכשיר שלכם מוגדרים מאפייני מערכת של ro.charger.*
, תוכלו לעיין במאפייני המערכת של המטען.