Ablauf-Energiesparmodus

Mit Android 10 gibt es jetzt eine Option für den Energiesparmodus wird anhand einer Routine aufgerufen. Mit dieser Option kann eine vom OEM ausgewählte App Signale für eine intelligentere Planung des Energiesparmodus an das System. Diese Option erfordert eine Konfiguration und ist optional zu implementieren.

Gerätekonfiguration

Anbieterspezifikation

Um der Benutzeroberfläche für Einstellungen mitzuteilen, dass das Gerät richtig konfiguriert ist, verwenden Sie den Konfigurations-Overlay zum Überschreiben des Werts config_batterySaverScheduleProvider mit den Paketnamen Ihrer App.

Wenn beispielsweise das App-Paket com.google.android.apps.turbo die Einstellung basierend auf dem Ablauf steuern, dann legen Sie folgenden 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. Erstellen Sie zur Bestätigung ein Bild, lade es auf ein Handy und navigiere zu Einstellungen > Akku > Akku Kostengünstig > Energiesparmodus. Die Option Basierend auf dem Ablauf sollte angezeigt werden.

Standardgrenzwert für die Deaktivierung

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. Die Standardeinstellung des Systems ist 80 %. Sie können ändern.

App-Konfiguration

Berechtigungen

Die APIs, die zum Aktivieren des Energiesparmodus über die App benötigt werden, sind geschützt mit der Berechtigung android.permission.POWER_SAVER. 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 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 der Version der App auf dem System diese Berechtigung nicht vorab gewähren Bild enthält, kann die App die Berechtigung nicht einholen oder die APIs nicht ordnungsgemäß aufrufen. Die gibt das System kein Feedback über die üblichen Berechtigungsfehler hinaus. Prüfen Sie, ob Sie die APIs aufrufen und ihre Auswirkungen beobachten können.

Installation

Damit basierend auf dem Ablauf richtig funktioniert, müssen Sie die App auf der System-Image mit der erforderlichen Berechtigung. Nur einer App das POWER_SAVER zuweisen und erlauben, basierend auf Routinen APIs 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 aktivieren

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 dem Ablauf für den Energiesparmodus aktiviert ist und die App ruft diese Methode mit einem true-Wert für powerSaveHint auf, dann ist der Energiesparmodus aktiviert wird. 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 den Überschreibungen von Nutzern und der Schlummerfunktion im Energiesparmodus auf dieselbe Weise. als prozentualer automatischer Energiesparmodus. 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 Methode, um diese Funktion zu bestätigen. mit welchem Verhalten ein OEM entscheidet, wann der routinemäßige Energiesparmodus aktiviert wird . 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 für den Energiesparmodus wählt der Nutzer die Option basierend auf dem Prozentsatz aus. und wählt 15 % aus. Der Energiesparmodus sollte NUR dann automatisch aktiviert werden, wenn wenn der Akku bei 15% geladen ist.
  • Der Nutzer wählt in der Benutzeroberfläche für den Energiesparmodus die Option Nach Ablauf 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. Energiesparmodus sollte NIE automatisch aktiviert werden.
  • Wenn der Energiesparmodus durch die App aktiviert wird und Nutzer ihn manuell überschreiben (z. B. über die Schnelleinstellungen oder die Einstellungen) wieder deaktiviert ist, sollte er BLEIBEN. AUS, bis der Nutzer ihn manuell wieder einschaltet oder den Thermostat in der sich das Gerät befindet.