Energiesparmodus für Abläufe

In Android 10 wird eine Option für den Energiesparmodus eingeführt, die auf Routinen basiert. Mit dieser Option kann eine vom OEM ausgewählte App Signale an das System senden, um den Energiesparmodus intelligenter zu planen. Diese Option erfordert eine Konfiguration und ist optional.

Gerätekonfiguration

Anbieterspezifikation

Um die Einstellungen-Benutzeroberfläche darüber zu informieren, dass das Gerät richtig konfiguriert ist, überschreiben Sie mit Ihrem Konfigurations-Overlay den Wert config_batterySaverScheduleProvider mit dem Paketnamen Ihrer App.

Wenn beispielsweise das App-Paket com.google.android.apps.turbo die Einstellung basierend auf Routine steuern soll, 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 Routine angezeigt werden. Erstelle dazu dein Image, übertrage es auf ein Smartphone und rufe Einstellungen > Akku > Energiesparmodus > Zeitplan für Energiesparmodus auf. Die Option basierend auf Routine sollte angezeigt werden.

Standardgrenzwert für „Aus“

Das neue Feld config_dynamicPowerSavingsDefaultDisableThreshold gibt einen Akkustand an, bei dem das System den Energiesparmodus deaktiviert, wenn er vom auf Routinen basierenden Scheduler aktiviert wurde. Der Standardwert ist 80%, aber Sie können ihn ändern.

App-Konfiguration

Berechtigungen

Die APIs, die für die Aktivierung des Energiesparmodus über die App erforderlich sind, sind durch die Berechtigung android.permission.POWER_SAVER geschützt. Dies ist eine Signatur-/privilegierte Berechtigung. Gewähren Sie der App, die den Energiesparmodus auslösen soll, diese Berechtigung auf Ihrem privapp-whitelist.

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 für die Version der App auf dem System-Image nicht vorab erteilen, kann die App die Berechtigung nicht erhalten oder die APIs nicht richtig aufrufen. Das System gibt kein Feedback über die üblichen Berechtigungsfehler hinaus. Prüfen Sie daher, ob Sie die APIs aufrufen und ihre Auswirkungen beobachten können.

Installation

Damit die Funktion basierend auf Routine richtig funktioniert, müssen Sie die App mit der erforderlichen Berechtigung auf dem Systemimage vorinstallieren. Gewähre nur einer App die Berechtigung POWER_SAVER und erlaube ihr, die APIs zur routinenbasierten Steuerung zu verwenden. Das Verhalten der Funktion, wenn mehr als eine App versucht, die Berechtigung und die APIs zu verwenden, wird nicht unterstützt und ist nicht angegeben.

Energiesparmodus auslösen

APIs

Wenn die Einrichtung bisher erfolgreich war, 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 für den Energiesparmodus basierend auf Routine aktiviert ist und die App diese Methode mit dem Wert true für powerSaveHint aufruft, wird der Energiesparmodus aktiviert. Geben Sie disableThreshold an, damit das System auch dann weiß, bei welchem Akkustand der Energiesparmodus deaktiviert werden kann, wenn die App nicht mit dem System kommunizieren kann.

Für diese API gelten dieselben Nutzerüberschreibungen und das gleiche Snoozing des Energiesparmodus wie für den prozentualen automatischen Energiesparmodus. Weitere Informationen finden Sie in der API-Dokumentation.

Um zu prüfen, ob die APIs erfolgreich aufgerufen wurden, fragen Sie globale Einstellungen ab, um zu prüfen, ob sich der Wert der zugrunde liegenden Einstellung entsprechend den API-Aufrufen geändert hat.

Wenn der Nutzer beispielsweise den Modus Routinemäßiger Energiesparmodus ausgewählt hat und die App setDynamicPowerSaveHint(true, 10) aufruft, sollten die globalen Einstellungen die folgenden 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, dieses Feature zu überprüfen, da nicht bekannt ist, welches Verhalten ein OEM verwendet, um zu entscheiden, wann der routinemäßige Energiesparmodus ausgelöst werden soll. Erstausrüster 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 ausführen kann:

  • Der Nutzer wählt in der Benutzeroberfläche für den Energiesparmodus-Zeitplan basierend auf Prozentsatz aus und wählt 15 % aus. Der Energiesparmodus sollte NUR bei einem Akkustand von 15% automatisch aktiviert werden.
  • Der Nutzer wählt in der Benutzeroberfläche für den Energiesparmodus basierend auf Routine aus. Wenn die App die API mit true aufruft, wird der Energiesparmodus aktiviert. Außerdem wird der Energiesparmodus automatisch deaktiviert, wenn das Gerät bis zum angegebenen Grenzwert aufgeladen und vom Stromnetz getrennt wird.
  • Der Nutzer wählt in der Benutzeroberfläche für den Energiesparmodus Kein aus. Der Energiesparmodus sollte NIEMALS automatisch aktiviert werden.
  • Wenn die App den Energiesparmodus aktiviert und der Nutzer ihn manuell wieder deaktiviert (über die Schnelleinstellungen, die Einstellungen usw.), SOLLTE er DEAKTIVIERT BLEIBEN, bis der Nutzer ihn entweder manuell wieder aktiviert oder das Gerät anschließt.