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

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

תצורת מכשיר

מפרט הספק

כדי להודיע לממשק המשתמש של ההגדרות שהמכשיר מוגדר בצורה נכונה, צריך להשתמש שכבת-על מסוג config כדי לשנות את הערך config_batterySaverScheduleProvider עם שם החבילה של האפליקציה.

לדוגמה, אם רוצים שחבילת האפליקציה com.google.android.apps.turbo ההגדרה מבוססת על תרחיש אז אתם הייתם קובעים את ערך התצורה הבא:

<string name="config_batterySaverScheduleProvider" translatable="false">
com.google.android.apps.turbo</string>

עכשיו אמורה להופיע בטלפון האפשרות מבוססת על תרחיש. כדי לוודא, יוצרים את התמונה, מעבירים אותה בטלפון ומנווטים אל הגדרות > סוללה > חיסכון בסוללה > תזמון החיסכון בסוללה. האפשרות based on routine (על סמך תרחיש) אמורה להופיע.

סף החיוב המוגדר כברירת מחדל

בשדה 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 based on routine. התנהגות של את התכונה כשיש יותר מאפליקציה אחת שמנסה להשתמש בהרשאה, וממשקי ה-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) אחראים לבדוק את השילוב שלהם כדי לוודא ההתנהגות עומדת בציפיות. בפרט, ודאו שהמכשיר יכול לבצע את המשימות הבאות:

  • המשתמש בוחר באפשרות based on percentage (לפי אחוז) בממשק המשתמש של לוח הזמנים של מצב החיסכון בסוללה, ובוחר באפשרות 15%. מצב חיסכון בסוללה אמור לפעול באופן אוטומטי רק כאשר עד 15% סוללה.
  • המשתמש בוחר באפשרות על סמך תרחיש בממשק המשתמש של לוח הזמנים לחיסכון בסוללה. מתי האפליקציה מפעילה את ה-API באמצעות הפקודה true, מצב 'חיסכון בסוללה' מופעל. בנוסף, מצב 'חיסכון בסוללה' נכבה באופן אוטומטי אם המכשיר טעון רמת הסף שצוינה מנותקת.
  • המשתמש בוחר באפשרות ללא בממשק המשתמש של לוח הזמנים של מצב החיסכון בסוללה. חיסכון בסוללה אף פעם לא אמורה לפעול באופן אוטומטי.
  • אם האפליקציה מפעילה את מצב 'חיסכון בסוללה', והמשתמש מבטל את הסוללה באופן ידני מצב 'חיסכון' יושבת שוב (באמצעות 'הגדרות מהירות', 'הגדרות' וכו'), הוא אמור להישאר במצב מופעל כבוי עד שהמשתמש יפעיל אותה שוב באופן ידני או יחבר את של המכשיר.