Mit Android 10 wird eine Option für den Energiesparmodus eingeführt, die basierend auf Ablauf heißt. 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
Wenn Sie der Benutzeroberfläche für Einstellungen mitteilen möchten, dass das Gerät richtig konfiguriert ist, verwenden Sie das Konfigurations-Overlay, um den Wert config_batterySaverScheduleProvider
mit dem Paketnamen Ihrer App zu überschreiben.
Wenn Sie beispielsweise möchten, dass das Anwendungspaket com.google.android.apps.turbo
die Einstellung basierend auf Routine steuert, legen Sie diesen Konfigurationswert fest:
<string name="config_batterySaverScheduleProvider" translatable="false">
com.google.android.apps.turbo</string>
Auf dem Smartphone sollte jetzt die Option Basierend auf dem Ablauf 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.
Standardmäßiger Grenzwert für „Aus“
Im neuen Feld config_dynamicPowerSavingsDefaultDisableThreshold
wird der Akkustand angegeben, bei dem der Energiesparmodus vom System deaktiviert wird, falls er vom Scheduler based on routine 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, gewähren Sie der App, die den Energiesparmodus auslösen soll, diese Berechtigung auf Ihrem privapp-whitelist
.
Ein Beispiel für das Gewähren 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 Anwendung auf dem System-Image gewähren, kann die Anwendung die Berechtigung nicht abrufen und die APIs nicht ordnungsgemäß 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 basierend auf Routine ordnungsgemäß funktioniert, müssen Sie die App mit der erforderlichen Berechtigung auf dem System-Image vorinstallieren. Erteilen Sie nur einer App die Berechtigung POWER_SAVER
und erlauben Sie ihr, die basierend auf Routinen APIs zu steuern. Das Verhalten der Funktion, wenn mehr als eine App versucht, die Berechtigung und APIs zu verwenden, wird nicht unterstützt und nicht angegeben.
Energiesparmodus aktivieren
APIs
Wenn die Einrichtung bisher erfolgreich war, sollte die in der Konfiguration angegebene OEM-App die zugehörige Methode in PowerManager zum Auslösen des Energiesparmodus aufrufen können:
public boolean setDynamicPowerSaveHint(boolean powerSaveHint, int disableThreshold)
Wenn die Option Basierend auf dem Ablauf 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 wird von Nutzern überschrieben und kann auf die gleiche Weise wie beim automatischen Energiesparmodus auf Prozentbasis zurückgesetzt werden. Weitere Informationen finden Sie in der API-Dokumentation.
Prüfen Sie, ob die APIs erfolgreich aufgerufen wurden. Rufen Sie dazu die globalen Abfrageeinstellungen auf, um zu prüfen, ob sich der Wert der Sicherungseinstellung entsprechend 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 aussehen:
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:
- In der Benutzeroberfläche des Zeitplans für den Energiesparmodus wählt der Nutzer 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 schaltet sich der Energiesparmodus automatisch aus, wenn das Gerät bis zum angegebenen Schwellenwert aufgeladen und von der Stromversorgung getrennt ist. - In der Benutzeroberfläche für den Energiesparmodus wählt der Nutzer Keine aus. Der Energiesparmodus sollte NIE automatisch aktiviert werden.
- Wenn die App den Energiesparmodus aktiviert und der Nutzer ihn manuell über die Schnelleinstellungen, Einstellungen usw. überschreibt, sollte er deaktiviert bleiben, bis der Nutzer ihn manuell wieder einschaltet oder das Gerät wieder anschließt.