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

בדף זה מתואר אופן הטיפול של Android במוצרים שניתנים להסרה סוללות או ללא סוללות פנימיות. במקום זאת, המכשירים האלה מחוברים למקור מתח חיצוני, כמו שקע חשמל או יציאת 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, טוב
סטטוס החיבור לאינטרנט של מטען המיזוג לא שונו כפוי למציאות

יצרנים יכולים לשנות את הגדרות ברירת המחדל באמצעות מנהל power_supply של הליבה או Health HAL.

Android מגרסה 9 ואילך

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

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

Android מגרסה 8.1 ומטה

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

הטמעה

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

אם אין למוצר סוללה והוא תמיד מחובר לחשמל מומלץ להטמיע מטען (power_supply) סיווג ליבה של Linux. מנהל התקן של מקור החשמל AC או USB שמגדיר את המאפיין sysfs אונליין אל true. לחלופין, אפשר להגדיר את הנכס באינטרנט של מטען המתח החשמלי המשתנה ב-HAL של Health במכשיר. כדי לעשות את זה צריך להטמיע 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.