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

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

תצורת מכשיר

בקטע הזה מוסבר איך להגדיר את המכשיר לאפשרות על סמך שגרה.

מפרט הספק

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

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

כדי לוודא, יוצרים את התמונה, מעבירים אותה למכשיר ועוברים אל הגדרות.

סוללה > חיסכון בסוללה > לוח זמנים של חיסכון בסוללה. מופיעה האפשרות Based on routine.

סף ברירת המחדל להשבתה

השדה config_dynamicPowerSavingsDefaultDisableThreshold מציין את רמת הטעינה של הסוללה שבה המערכת מכבה את מצב חיסכון בסוללה אם המתזמן Based on routine הפעיל אותו. ברירת המחדל של המערכת היא 80%, אבל אפשר לשנות אותה.

הגדרת אפליקציה

בקטע הזה מוסבר איך להגדיר את האפליקציה כך שתשתמש באפשרות על סמך שגרה.

הרשאות

ממשקי ה-API שנדרשים כדי שאפליקציה תפעיל את התכונה 'חיסכון בסוללה' מוגנים על ידי ההרשאה android.permission.POWER_SAVER. זו חתימה או הרשאה מיוחדת. כלומר, האפליקציה צריכה להיות בספרייה priv-app בתמונת המערכת, ואתם צריכים להעניק את ההרשאה הזו באופן מפורש.

לאפליקציות עם הרשאות מיוחדות, צריך להעניק הרשאות בקובץ XML של הגדרות המערכת בספרייה /etc/permissions/ באותה מחיצה שבה נמצאת האפליקציה. לדוגמה, כדי להעניק את ההרשאה android.permission.POWER_SAVER לאפליקציה עם שם החבילה com.google.android.apps.turbo:

<!-- File located at /etc/permissions/privapp-permissions-DEVICE_NAME.xml -->
<permissions>
    <privapp-permissions package="com.google.android.apps.turbo">
        <permission name="android.permission.POWER_SAVER"/>
    </privapp-permissions>
</permissions>

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

התקנה

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

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