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

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

האם יש סוללה?

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

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

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

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

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

מצב סוללה Android מגרסה 9 ואילך Android מגרסה 8.1 ומטה
הצגה false true
סטטוס לא ידוע בטעינה
הקיבולת שנותרה 0 100%
קופת לא ידוע good, טוב
סטטוס החיבור לאינטרנט של מטען המיזוג לא שונה כפוי למציאות

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