In Android 10 gibt es die Option Basierend auf Abläufen für den Zeitplan des Energiesparmodus. Mit dieser Option kann eine vom OEM ausgewählte App dem System Signale für eine intelligentere Planung des Energiesparmodus senden. Diese Option erfordert eine Konfiguration und ist optional.
Gerätekonfiguration
Anbieterspezifikation
Um die Benutzeroberfläche der Einstellungen darüber zu informieren, dass das Gerät richtig konfiguriert ist, überschreiben Sie den Wert config_batterySaverScheduleProvider
mit dem Paketnamen Ihrer App.
Wenn Sie beispielsweise möchten, dass das App-Paket com.google.android.apps.turbo
die Einstellung Basierend auf Abläufen steuert, legen Sie diesen Konfigurationswert fest:
<string name="config_batterySaverScheduleProvider" translatable="false">
com.google.android.apps.turbo</string>
Nun sollte auf dem Smartphone die Option Basierend auf Abläufen angezeigt werden. Um dies zu überprüfen, erstellen Sie Ihr Image, flashen Sie es auf ein Smartphone und rufen Sie Einstellungen > Akku > Energiesparmodus > Zeitplan für den Energiesparmodus auf. Die Option Basierend auf Ablauf sollte angezeigt werden.
Standardgrenzwert für die Deaktivierung
Im neuen Feld config_dynamicPowerSavingsDefaultDisableThreshold
wird der Akkustand angegeben, bei dem der Energiesparmodus vom Scheduler based on routine deaktiviert wird, falls er zuvor aktiviert wurde. Der Standardwert des Systems ist 80%, Sie können ihn aber ändern.
App-Konfiguration
Berechtigungen
Die APIs, die erforderlich sind, damit die App den Energiesparmodus über die App aktivieren kann, sind durch die Berechtigung android.permission.POWER_SAVER
geschützt. Da es sich um eine signatur-/privilegierte Berechtigung handelt, müssen Sie der App, die den Energiesparmodus auslösen soll, diese Berechtigung auf Ihrem privapp-whitelist
gewähren.
Beispiel für die Gewährung der Berechtigung privapp
für eine App:
<privapp-permissions package="com.google.android.apps.turbo">
<permission name="android.permission.POWER_SAVER"/>
</privapp-permissions>
Wenn Sie diese Berechtigung nicht vorab der Version der App im System-Image gewähren, kann die App die Berechtigung nicht erwerben oder die APIs nicht richtig aufrufen. Das System gibt außer den üblichen Berechtigungsfehlern kein Feedback. Prüfen Sie daher, ob Sie die APIs aufrufen und ihre Auswirkungen beobachten können.
Installation
Damit auf Routine basierend ordnungsgemäß funktioniert, müssen Sie die App mit der erforderlichen Berechtigung vorab auf dem System-Image installieren. Gewähren Sie nur einer App die Berechtigung POWER_SAVER
und erlauben Sie ihr, die APIs based on routine zu steuern. Das Verhalten der Funktion, wenn mehrere Apps versuchen, die Berechtigung und APIs zu verwenden, wird nicht unterstützt und ist nicht spezifiziert.
Energiesparmodus auslösen
APIs
Angenommen, die Einrichtung war bisher erfolgreich, sollte die in der Konfiguration angegebene OEM-App die zugehörige Methode in PowerManager aufrufen können, um den Energiesparmodus zu aktivieren:
public boolean setDynamicPowerSaveHint(boolean powerSaveHint, int disableThreshold)
Wenn die Option Basierend auf Abläufen für den Energiesparmodus aktiviert ist und die App diese Methode mit einem true
-Wert für powerSaveHint
aufruft, wird der Energiesparmodus aktiviert. Geben Sie disableThreshold
an, damit das System auch dann weiß, bei welchem Akkustand der Energiesparmodus sicher deaktiviert werden kann, wenn die App nicht mit dem System kommunizieren kann.
Diese API unterliegt wie der prozentuale automatische Energiesparmodus den Nutzerüberschreibungen und dem Energiesparmodus-Snooze. Weitere Informationen finden Sie in der API-Dokumentation.
Um zu prüfen, ob die APIs erfolgreich aufgerufen werden, können Sie die Einstellungen global abfragen, um zu sehen, ob sich der Wert der zugrunde liegenden Einstellung gemäß den API-Aufrufen geändert hat.
Wenn der Nutzer beispielsweise den Modus Routine-Energiesparmodus ausgewählt hat und die App setDynamicPowerSaveHint(true, 10)
aufruft, sollten die globalen Einstellungen folgende Werte haben:
automatic_power_save_mode: 1
dynamic_power_savings_disable_threshold: 10
dynamic_power_savings_enabled: 1
Wenn Sie dann setDynamicPowerSaveHint(false, 25)
aufrufen, sollten die Werte so sein:
automatic_power_save_mode: 1
dynamic_power_savings_disable_threshold: 25
dynamic_power_savings_enabled: 0
Sie können diese Werte mit dem folgenden adb
-Befehl prüfen:
adb shell settings get global <setting-name>
Bestätigung
Es gibt keine automatisierte Möglichkeit, diese Funktion zu überprüfen, da nicht bekannt ist, anhand welcher Kriterien ein OEM entscheidet, wann der Akkusparmodus ausgelöst werden soll. OEMs sind daher dafür verantwortlich, ihre Integration zu testen, um sicherzustellen, dass das Verhalten den Erwartungen entspricht. Prüfen Sie insbesondere, ob das Gerät die folgenden Aufgaben erfüllen kann:
- Der Nutzer wählt in der Benutzeroberfläche für den Zeitplan des Energiesparmodus Basierend auf dem Prozentsatz und dann 15 % aus. Der Energiesparmodus sollte NUR bei einem Akkustand von 15% automatisch aktiviert werden.
- Der Nutzer wählt auf der Benutzeroberfläche für den Energiesparmodus-Zeitplan die Option Basierend auf Abläufen aus. Wenn die App die API mit
true
aufruft, wird der Energiesparmodus aktiviert. Außerdem wird der Energiesparmodus automatisch deaktiviert, wenn das Gerät auf den angegebenen Grenzwert aufgeladen und vom Stromnetz getrennt ist. - Der Nutzer wählt in der Benutzeroberfläche für den Energiesparzeitplan keine aus. Der Energiesparmodus sollte NIE automatisch aktiviert werden.
- Wenn die App den Energiesparmodus aktiviert und der Nutzer ihn manuell überschreibt, um ihn wieder zu deaktivieren (z. B. über die Schnelleinstellungen oder die Einstellungen), sollte er AUSGESCHALTET bleiben, bis der Nutzer ihn entweder manuell wieder einschaltet oder das Gerät anschließt.