Energiesparmodus für Routinen

In Android 10 wird eine Option für den Energiesparmodus eingeführt, die Basierend auf Routine 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

In diesem Abschnitt wird beschrieben, wie Sie Ihr Gerät für die Option Basierend auf Routine konfigurieren.

Anbieterspezifikation

Damit die Einstellungen-Benutzeroberfläche darüber informiert wird, dass das Gerät richtig konfiguriert ist, überschreiben Sie mit Ihrem Konfigurations-Overlay 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 Routine steuert, legen Sie diesen Konfigurationswert fest:

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

Um das zu überprüfen, erstellen Sie Ihr Image, übertragen Sie es auf ein Gerät und rufen Sie die Einstellungen auf.

Akku > Energiesparmodus > Zeitplan für den Energiesparmodus. Die Option Basierend auf Routine wird angezeigt.

Standardgrenzwert für „Aus“

Im Feld config_dynamicPowerSavingsDefaultDisableThreshold wird ein Akkustand angegeben, bei dem der Energiesparmodus deaktiviert wird, wenn er vom Scheduler Based on routine (Basierend auf Routine) aktiviert wurde. Der Standardwert ist 80%, aber Sie können ihn ändern.

App-Konfiguration

In diesem Abschnitt wird beschrieben, wie Sie Ihre App für die Verwendung der Option Basierend auf Routine konfigurieren.

Berechtigungen

Die APIs, die für eine App erforderlich sind, um den Energiesparmodus zu aktivieren, sind durch die Berechtigung android.permission.POWER_SAVER geschützt. Dies ist eine Signatur- oder Berechtigung mit erhöhten Rechten. Das bedeutet, dass sich die App in einem priv-app-Verzeichnis im Systemimage befinden muss und Sie diese Berechtigung explizit gewähren müssen.

Für privilegierte Apps müssen Sie Berechtigungen in einer XML-Datei für die Systemkonfiguration im Verzeichnis /etc/permissions/ auf derselben Partition wie die App gewähren. Wenn Sie beispielsweise einer App mit dem Paketnamen com.google.android.apps.turbo die Berechtigung android.permission.POWER_SAVER gewähren möchten:

<!-- 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>

Wenn Sie diese Berechtigung der App nicht im System-Image vorab erteilen, kann die App die Berechtigung nicht abrufen oder die APIs nicht erfolgreich aufrufen. Das System gibt kein Feedback über Standardberechtigungsfehler hinaus. Daher ist es wichtig, zu prüfen, ob die App die APIs aufrufen und ihre Auswirkungen beobachten kann.

Installation

Damit Basierend auf Routine richtig funktioniert, müssen Sie die App mit der erforderlichen Berechtigung auf dem System-Image vorinstallieren. Erteilen Sie nur einer App die Berechtigung android.permission.POWER_SAVER und lassen Sie sie die APIs für Basierend auf Routine steuern. Das Verhalten der Funktion wird nicht unterstützt und ist nicht angegeben, wenn mehr als eine App versucht, die Berechtigung und die APIs zu verwenden.

Ablauf „Energiesparmodus“ auslösen

In diesem Abschnitt wird beschrieben, wie Ihre App den Akkusparmodus basierend auf Routine mithilfe der bereitgestellten APIs auslösen kann.

APIs

Wenn die Einrichtung erfolgreich ist, kann die in der Konfiguration angegebene OEM-App die zugehörige Methode in PowerManager aufrufen, um den Energiesparmodus zu aktivieren:

public boolean setDynamicPowerSaveHint(boolean powerSaveHint, int disableThreshold)

Wenn die Option Basierend auf Routine für den Energiesparmodus 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 die globalen Einstellungen ab, um zu bestätigen, dass sich der zugrunde liegende Einstellungswert entsprechend den API-Aufrufen geändert hat. Wenn Sie beispielsweise den Energiesparmodus Basierend auf Routine auswählen und die App setDynamicPowerSaveHint(true, 10) aufruft, haben die globalen Einstellungen die folgenden Werte:

automatic_power_save_mode: 1
dynamic_power_savings_disable_threshold: 10
dynamic_power_savings_enabled: 1

Wenn Sie dann setDynamicPowerSaveHint(false, 25) aufrufen, sind die Werte:

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 der OEM das Verhalten bestimmt, das den Energiesparmodus Basierend auf Routine auslöst. OEMs müssen ihre Integration testen, um zu prüfen, ob das Verhalten den Erwartungen entspricht. Prüfen Sie insbesondere, ob das Gerät die folgenden Aufgaben ausführen kann:

  • Nach Prozentsatz:Wenn Sie in der Benutzeroberfläche Energiesparmodus-Zeitplan die Option Nach Prozentsatz auswählen und 15 % festlegen, wird der Energiesparmodus automatisch aktiviert, wenn der Akkustand 15 % erreicht.
  • Basierend auf Routine:Wenn Sie in der Benutzeroberfläche Energiesparmodus-Zeitplan die Option Basierend auf Routine auswählen, wird der Energiesparmodus aktiviert, wenn die App die API mit true aufruft. Außerdem wird der Energiesparmodus automatisch deaktiviert, wenn das Gerät bis zum angegebenen Schwellenwert aufgeladen und vom Stromnetz getrennt wird.
  • Keine:Wenn Sie in der Benutzeroberfläche Zeitplan für den Energiesparmodus die Option Keine auswählen, wird der Energiesparmodus nie automatisch aktiviert.
  • Manuelle Überschreibung:Wenn die App den Energiesparmodus aktiviert und Sie ihn manuell deaktivieren (über die Schnelleinstellungen, die Einstellungen oder andere Methoden), bleibt er deaktiviert, bis Sie ihn entweder manuell wieder aktivieren oder das Gerät anschließen.