ב-Android 10 יש אפשרות ללוח הזמנים של מצב החיסכון בסוללה שנקראת מבוסס על תרחיש. האפשרות הזו מאפשרת לאפליקציה שנבחרה על ידי יצרן הציוד המקורי לספק אותות למערכת לצורך תזמון חכם יותר של חיסכון בסוללה. כדי להשתמש באפשרות הזו צריך להגדיר אותה, ואפשר להטמיע אותה רק אם רוצים.
תצורת מכשיר
מפרט הספק
כדי להודיע לממשק המשתמש של ההגדרות שהמכשיר מוגדר בצורה נכונה, משתמשים בשכבת-העל של התצורה כדי לשנות את הערך config_batterySaverScheduleProvider
לשם החבילה של האפליקציה.
לדוגמה, אם רוצים לחבילת האפליקציה com.google.android.apps.turbo
לשלוט בהגדרה based on routine, צריך להגדיר את ערך התצורה הזה:
<string name="config_batterySaverScheduleProvider" translatable="false">
com.google.android.apps.turbo</string>
עכשיו אמורה להופיע בטלפון האפשרות על סמך שגרה. כדי לוודא, בונים את התמונה, מאפסים אותה לטלפון ועוברים אל Settings > סוללה > סוללה > חיסכון בסוללה > מנהל זמן של חיסכון בסוללה. האפשרות מבוססת על תרחיש אמורה להופיע.
סף החיוב המוגדר כברירת מחדל
השדה החדש config_dynamicPowerSavingsDefaultDisableThreshold
מציין את רמת הטעינה של הסוללה שבה המערכת משביתה את מצב החיסכון בסוללה, אם הוא הופעל על ידי מתזמן based on routine. ברירת המחדל של המערכת היא 80%, אבל אפשר לשנות אותה.
הגדרת אפליקציה
הרשאות
ממשקי ה-API הדרושים לאפליקציה כדי להפעיל את מצב החיסכון בסוללה דרך האפליקציה מוגנים
באמצעות ההרשאה android.permission.POWER_SAVER
. זוהי הרשאת חתימה/הרשאות, לכן עליכם להעניק לאפליקציה שאתם רוצים לאפשר לה להפעיל את ההרשאה הזו לחיסכון בסוללה ב-privapp-whitelist
.
דוגמה להענקת ההרשאה privapp
לאפליקציה:
<privapp-permissions package="com.google.android.apps.turbo">
<permission name="android.permission.POWER_SAVER"/>
</privapp-permissions>
אם לא תעניקו מראש את ההרשאה הזו לגרסת האפליקציה בתמונת המערכת, האפליקציה לא תוכל לקבל את ההרשאה או להפעיל את ממשקי ה-API בצורה תקינה. המערכת לא מספקת משוב מעבר לשגיאות ההרשאות הרגילות, לכן חשוב לוודא שאפשר לקרוא לממשקי ה-API ולבדוק את ההשפעה שלהם.
התקנה
כדי שמבוסס על תרחיש תעבוד כמו שצריך, צריך להתקין מראש את האפליקציה בתמונת המערכת עם ההרשאה הנדרשת. מעניקים לאפליקציה אחת בלבד את ההרשאה POWER_SAVER
ומאפשרים לה לשלוט בממשקי ה-API על סמך התרחישים. לא תהיה תמיכה בהתנהגות התכונה כשיותר מאפליקציה אחת תנסה להשתמש בהרשאה ובממשקי ה-API, ולא צוין מה תהיה ההתנהגות הזו.
הפעלת מצב חיסכון בסוללה
ממשקי API
בהנחה שעד עכשיו ההגדרה בוצעה בהצלחה, אפליקציית ה-OEM שמצוינת בהגדרה אמורה להיות מסוגלת לקרוא ל-method המשויך ב-PowerManager כדי להפעיל את מצב החיסכון בסוללה:
public boolean setDynamicPowerSaveHint(boolean powerSaveHint, int disableThreshold)
אם לוח הזמנים לחיסכון בסוללה מופעל על סמך התרחיש והאפליקציה שולחת קריאה לשיטה הזו עם הערך true
במאפיין powerSaveHint
, מצב 'חיסכון בסוללה' מופעל. מציינים את הערך disableThreshold
כדי שאם האפליקציה לא תוכל לתקשר עם המערכת, המערכת עדיין תדע מהו אחוז הטעינה של הסוללה תוכל להשבית את החיסכון בסוללה.
ה-API הזה כפוף לשינויים של המשתמשים ולהשהיה של מצב החיסכון בסוללה, בדיוק כמו מצב החיסכון האוטומטי המבוסס על אחוזים. מידע נוסף זמין במסמכי העזרה של ה-API.
כדי לוודא שהקריאה לממשקי ה-API תקינה, צריך לבצע הגדרות גלובליות של שאילתות ולבדוק אם הערך של הגדרת הגיבוי השתנה בהתאם לקריאות ל-API.
לדוגמה, אם המשתמש בחר במצב חיסכון בסוללה רגילה והאפליקציה קוראת לפונקציה setDynamicPowerSaveHint(true, 10)
, ההגדרות הגלובליות צריכות לכלול את הערכים הבאים:
automatic_power_save_mode: 1
dynamic_power_savings_disable_threshold: 10
dynamic_power_savings_enabled: 1
אם קוראים לפונקציה setDynamicPowerSaveHint(false, 25)
, הערכים צריכים להיות:
automatic_power_save_mode: 1
dynamic_power_savings_disable_threshold: 25
dynamic_power_savings_enabled: 0
אפשר לבדוק את הערכים האלה באמצעות הפקודה adb
:
adb shell settings get global <setting-name>
אימות
אין דרך אוטומטית לאמת את התכונה הזו, כי אין דרך לדעת איך ה-OEM (יצרן הציוד המקורי) ישתמש כדי להחליט מתי להפעיל את מצב חיסכון בסוללה שגרתי. לכן, יצרני ציוד מקורי (OEM) אחראים לבדוק את השילוב שלהם כדי לוודא שההתנהגות עומדת בציפיות. באופן ספציפי, צריך לוודא שהמכשיר יכול לבצע את המשימות הבאות:
- המשתמש בוחר באפשרות מבוסס על אחוזים בממשק המשתמש של לוח הזמנים של מצב החיסכון בסוללה ואז בוחר באפשרות 15%. מצב חיסכון בסוללה אמור לפעול באופן אוטומטי רק כשהסוללה מגיעה ל-15%.
- המשתמש בוחר באפשרות לפי תרחיש בממשק המשתמש של לוח הזמנים של מצב החיסכון בסוללה. כשהאפליקציה שולחת קריאה ל-API באמצעות
true
, מצב 'חיסכון בסוללה' מופעל. בנוסף, מצב החיסכון בסוללה מושבת באופן אוטומטי אם המכשיר נטען ברמת הסף שצוינה וכשהוא מנותק מהחשמל. - המשתמש בוחר באפשרות ללא בממשק המשתמש של לוח הזמנים של מצב החיסכון בסוללה. מצב חיסכון בסוללה אף פעם לא אמור לפעול באופן אוטומטי.
- אם האפליקציה מפעילה את חיסכון הסוללה והמשתמש מבטל את חיסכון הסוללה באופן ידני (באמצעות ההגדרות המהירות, ההגדרות וכו'), הוא אמור להישאר מושבת עד שהמשתמש יפעיל אותו שוב באופן ידני או יחבר את המכשיר.