תמיכה במכשירים ללא סוללות

דף זה מתאר כיצד אנדרואיד מטפל במוצרים שיש להם סוללות נשלפות או ללא סוללות פנימיות. המכשירים האחרונים מחוברים במקום זאת למקור מתח חיצוני, כגון שקע מתח AC או יציאת USB במכשיר אחר.

האם יש סוללה?

הקוד הבא עשוי לשמש יישומים כדי לזהות אם למכשיר יש סוללה כרגע:

```
final Intent batteryInfo = registerReceiver(null, new
IntentFilter(Intent.ACTION_BATTERY_CHANGED));

return batteryInfo.getBooleanExtra(BatteryManager.EXTRA_PRESENT, true);
```

התנהגות מכשיר ללא סוללה

אם אנדרואיד לא מזהה התקן סוללה עבור המוצר שלך, אז נעשה שימוש בערכי ברירת המחדל הבאים הקשורים לסוללה. שימו לב שברירות המחדל השתנו במהדורת אנדרואיד 9. טבלה זו מציגה את ההבדלים.

מצב סוללה אנדרואיד 9 ומעלה אנדרואיד 8.1 ומטה
מתנה שֶׁקֶר נָכוֹן
סטָטוּס לא ידוע טְעִינָה
קיבולת שנותרה 0 100%
בְּרִיאוּת לא ידוע טוֹב
מצב מקוון של מטען AC לא שונה נאלץ לאמת

היצרנים עשויים לשנות את הגדרות ברירת המחדל באמצעות מנהל התקן_ספק_ power_ליב או Health HAL .

אנדרואיד 9 ומעלה

אנדרואיד 9 מסיר קוד קודם למכשירים חסרי סוללה שכברירת מחדל העמידו פנים שקיימת סוללה, נטענת ב-100% והייתה במצב בריאותי טוב עם קריאת טמפרטורה רגילה על התרמיסטור שלו.

רוב ממשקי ה-API של Framework שעוסקים במידע זה ממשיכים לטפל במצבים נפוצים כמו בעבר: המערכת תיחשב נטענת (כלומר, לא פועלת על סוללה), ולא תיחשב כבעלת סוללה חלשה. אם ממשק המשתמש מצייר את סמל הסוללה, הוא יופיע עם סימן קריאה, ואחוז הסוללה יוצג כ-0%. אבל המכשיר לא יכבה בגלל סוללה חלשה, ויתוזמנו עבודות הדורשות טעינה או סוללה טובה.

אנדרואיד 8.1 ומטה

מכיוון שסטטוס הסוללה אינו ידוע, ממשקי API של Android Framework יחשבו שהמערכת נטענת (או, לא פועלת על סוללה) ולא ייחשבו כבעלת סוללה חלשה. אם ממשק המשתמש מציג את סמל הסוללה, הוא יופיע עם סימן קריאה, ואחוז הסוללה יוצג כ-0%. אבל המכשיר לא יכבה בגלל סוללה חלשה, ויתוזמנו עבודות הדורשות טעינה או סוללה טובה.

יישום

קוד ברירת המחדל של אנדרואיד 9 עשוי לעבוד כראוי עבור המכשיר שלך, אך מומלץ לבצע שינוי גרעין או HAL כדי לשקף במדויק את מצב המתח והסוללה של המוצר שלך, כמתואר לעיל. אם אנדרואיד 9 ומעלה לא מזהה מכשיר מטען מסוג אספקת חשמל של לינוקס , אז כברירת מחדל לכל סוגי המטענים (AC, USB, Wireless) יהיה מצב לא מקוון . אם כל המטענים אינם מקוונים אך לא זוהה התקן סוללה, המערכת עדיין תיחשב נטענת במובן זה שהיא פועלת על סוללה חיצונית, לא על סוללה, כפי שתואר קודם לכן.

אם למוצר שלך אין סוללה והוא תמיד מחובר למקור מתח, עדיף ליישם מנהל התקן מטען בדרגת Linux ליבת power_supply עבור מקור המתח AC או USB שמגדיר את תכונת sysfs המקוונת שלו ל- true . או שאתה יכול להגדיר את הנכס המקוון של מטען AC ב-Health HAL עבור המכשיר שלך. לשם כך יש ליישם Health HAL כמתואר ביישום Health 2.0 .

Health HAL מותאם אישית זה מיישם גרסה מותאמת אישית של Health::getHealthInfo() המשנה את הערך של BatteryProperties.chargerAcOnline = true .

כדי להתחיל, העתק hardware/interfaces/health/2.0/default/Health.cpp ליישום Health HAL משלך ושנה אותו בהתאם ל- README של Health 2.0 .