ב-Android 10 נוספה אפשרות לוח זמנים לחיסכון בסוללה שנקראת על סמך תרחיש. האפשרות הזו מאפשרת לאפליקציה שנבחרה על ידי יצרן הציוד המקורי לספק אותות למערכת לצורך תזמון חכם יותר של חיסכון בסוללה. האפשרות הזו דורשת הגדרה, והיא אופציונלית להטמעה.
תצורת מכשיר
מפרט הספק
כדי להודיע לממשק המשתמש של ההגדרות שהמכשיר מוגדר בצורה נכונה, משתמשים בשכבת-העל של התצורה כדי לשנות את הערך config_batterySaverScheduleProvider
לשם החבילה של האפליקציה.
לדוגמה, אם רוצים שחבילת האפליקציה com.google.android.apps.turbo
ההגדרה מבוססת על תרחיש אז אתם הייתם קובעים את ערך התצורה הבא:
<string name="config_batterySaverScheduleProvider" translatable="false">
com.google.android.apps.turbo</string>
עכשיו אמורה להופיע בטלפון האפשרות על סמך שגרה. כדי לוודא, יוצרים את התמונה, מעבירים אותה בטלפון ומנווטים אל הגדרות > סוללה > חיסכון בסוללה > תזמון החיסכון בסוללה. האפשרות מבוססת על תרחיש אמורה להופיע.
ערך ברירת המחדל של הסף להשבתה
בשדה config_dynamicPowerSavingsDefaultDisableThreshold
החדש מצוין
רמת הטעינה שבה המערכת מכבה את מצב 'חיסכון בסוללה', אם היא הופעלה
באמצעות מתזמן המבוסס על תרחיש. ברירת המחדל של המערכת היא 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 ולראות את ההשפעות שלהם.
התקנה
כדי שהאפשרות based on routine תפעל כראוי, צריך להתקין מראש את האפליקציה בתמונת המערכת עם ההרשאה הנדרשת. מתן POWER_SAVER
לאפליקציה אחת בלבד
הרשאה שמאפשרת לו לשלוט בממשקי ה-API על סמך שגרתיות. לא תהיה תמיכה בהתנהגות התכונה כשיותר מאפליקציה אחת תנסה להשתמש בהרשאה ובממשקי ה-API, ולא צוין מה תהיה ההתנהגות הזו.
הפעלת מצב חיסכון בסוללה
ממשקי API
בהנחה שההגדרה בוצעה בהצלחה עד עכשיו, אפליקציית ה-OEM שצוינה בתצורה אמורה להפעיל את השיטה המשויכת ב-PowerManager כדי להפעיל את חיסכון הסוללה:
public boolean setDynamicPowerSaveHint(boolean powerSaveHint, int disableThreshold)
אם האפשרות based on routine (לפי תרחיש) מופעלת בלוח הזמנים של מצב החיסכון בסוללה והאפליקציה קורא לשיטה הזו עם ערך 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
, מצב 'חיסכון בסוללה' מופעל. בנוסף, מצב 'חיסכון בסוללה' נכבה באופן אוטומטי אם המכשיר טעון רמת הסף שצוינה מנותקת. - המשתמש בוחר באפשרות none בממשק המשתמש של לוח הזמנים של חיסכון בסוללה. מצב החיסכון בסוללה אף פעם לא אמור להופעל באופן אוטומטי.
- אם האפליקציה מפעילה את חיסכון הסוללה והמשתמש מבטל את חיסכון הסוללה באופן ידני (באמצעות ההגדרות המהירות, ההגדרות וכו'), הוא אמור להישאר מושבת עד שהמשתמש יפעיל אותו שוב באופן ידני או יחבר את המכשיר.