חיסכון בסוללה לתרחיש

ב-Android 10 יש אפשרות ללוח זמנים לחיסכון בסוללה שנקרא מבוסס על תרחיש. האפשרות הזו מאפשרת לאפליקציה שנבחרה על ידי ה-OEM (יצרן הציוד המקורי): מספקים אותות למערכת לצורך תזמון חכם יותר של חיסכון בסוללה. כדי להשתמש באפשרות הזו צריך להגדיר אותה, ואפשר להטמיע אותה רק אם רוצים.

תצורת מכשיר

מפרט הספק

כדי להודיע לממשק המשתמש של ההגדרות שהמכשיר מוגדר בצורה נכונה, צריך להשתמש שכבת-על מסוג config כדי לשנות את הערך 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 ולראות את ההשפעות שלהם.

התקנה

כדי שהשיטה מבוססת על תרחיש תפעל בצורה תקינה, עליך להתקין מראש את האפליקציה קובץ אימג' של המערכת עם ההרשאה הנדרשת. מתן POWER_SAVER לאפליקציה אחת בלבד הרשאה שמאפשרת לו לשלוט בממשקי ה-API על סמך שגרתיות. התנהגות של את התכונה כשיש יותר מאפליקציה אחת שמנסה להשתמש בהרשאה, וממשקי ה-API ולא צוין.

הפעלת מצב חיסכון בסוללה

ממשקי API

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