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

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

תצורת המכשיר

מפרט הספק

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