בדף הזה מוסבר איך Android מטפלת במוצרים עם סוללות נשלפות או ללא סוללות פנימיות. המכשירים האחרים מחוברים במקום זאת אל מקור חשמל חיצוני, כמו שקע חשמל AC או יציאת USB במכשיר אחר במכשיר.
האם יש סוללה?
אפליקציות יכולות להשתמש בקוד הבא כדי לזהות אם יש במכשיר סוללה:
```
final Intent batteryInfo = registerReceiver(null, new
IntentFilter(Intent.ACTION_BATTERY_CHANGED));
return batteryInfo.getBooleanExtra(BatteryManager.EXTRA_PRESENT, true);
```
התנהגות של מכשיר ללא סוללה
אם מערכת Android לא מזהה מכשיר סוללה למוצר, המערכת תשתמש בערכים הבאים של ברירת המחדל שקשורים לסוללה. חשוב לזכור שברירת המחדל השתנתה בגרסה 9 של Android. בטבלה הזו מוצגים ההבדלים.
מצב סוללה | Android מגרסה 9 ואילך | Android מגרסה 8.1 ומטה |
---|---|---|
הצגה | false | true |
סטטוס | לא ידוע | בטעינה |
הקיבולת שנותרה | 0 | 100% |
קופת | לא ידוע | good, טוב |
סטטוס החיבור לאינטרנט של מטען המיזוג | לא שונה | מאולץ ל-true |
יצרנים יכולים לשנות את הגדרות ברירת המחדל באמצעות מנהל power_supply של הליבה או Health HAL.
Android מגרסה 9 ואילך
מערכת Android 9 מסירה קוד קודם חלק מהקוד הקודם למצב 'ללא סוללה' מכשירים שבברירת המחדל שלהם העמידו פנים שקיימת סוללה, נטענים 100%, והיה במצב בריאותי טוב עם טמפרטורת טמפרטורה רגילה במכשיר לתרמיסטור.
רוב ממשקי ה-API של המסגרת שמטפלים במידע הזה ממשיכים לטפל במצבים נפוצים כמו בעבר: המערכת נחשבת לטעונה (כלומר, היא לא פועלת על סוללה) ולא נחשבת למערכת עם סוללה חלשה. אם סמל הסוללה מופיע בממשק המשתמש, הוא יופיע עם סימן קריאה ושיעור הטעינה יוצג כ-0%. עם זאת, המכשיר לא יכבה בגלל סוללה חלשה, ותתבצע תזמון של משימות שדורשות טעינה או סוללה מלאה.
Android מגרסה 8.1 ומטה
בגלל שסטטוס הסוללה לא ידוע, ממשקי ה-API של Android framework יתייחסו שהמערכת בטעינה (או לא פועלת על סוללת סוללה) נחשב לסוללה חלשה. אם ממשק המשתמש מציג את הסוללה הסמל יופיע עם סימן קריאה, ואחוז הסוללה הוא מוצגת כ-0%. עם זאת, המכשיר לא יכבה בגלל שהסוללה חלשה ולכן נדרשות טעינה או שסוללה תקינה מתוזמנת.
הטמעה
יכול להיות שקוד ברירת המחדל של Android 9 יפעל כמו שצריך אבל מומלץ לבצע ליבה או שינוי HAL משקפים במדויק את חיי הסוללה ומצב הסוללה של המוצר, כפי שמתואר למעלה. אם ב-Android מגרסה 9 ואילך לא מזוהה מכשיר טעינה מסוג Linux power supply class, כברירת מחדל, הסטטוס של כל סוגי המטענים (AC, USB, אלחוטי) יהיה offline. אם כל המטענים במצב אופליין אבל לא זוהה מכשיר עם סוללה, המערכת עדיין תחשב כטעינה במובן שהיא פועלת באמצעות חשמל חיצוני ולא באמצעות סוללה, כפי שמתואר למעלה.
אם למוצר אין סוללה והוא תמיד מחובר למקור חשמל, מומלץ להטמיע מנהל של charger מסוג power_supply של ליבה של Linux למקור החשמל מסוג AC או USB, שמגדיר את המאפיין sysfs
של online לערך true
. לחלופין, אפשר להגדיר את הנכס הדיגיטלי של מטען המזגן ב-Health HAL
למכשיר שלכם. כדי לעשות את זה צריך להטמיע HAL בתחום הבריאות כפי שמתואר ביישום של HAL
Health 2.0.
HAL המותאם אישית הזה של Health מיישם גרסה מותאמת אישית של Health::getHealthInfo()
שמשנה את הערך של BatteryProperties.chargerAcOnline = true
.
כדי להתחיל, צריך להעתיק את הקובץ
hardware/interfaces/health/2.0/default/Health.cpp
ליישום Health HAL שלך ולשנות אותו בהתאם ל-Health 2.0
README.