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 muss konfiguriert werden und ist optional.
Gerätekonfiguration
In diesem Abschnitt wird beschrieben, wie Sie Ihr Gerät für die Option Auf Routine basierend konfigurieren.
Anbieterangabe
Damit die Einstellungen -UI 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 beispielsweise das App-Paket com.google.android.apps.turbo die Einstellung Auf Routine basierend steuern soll, legen Sie diesen Konfigurationswert fest:
<string name="config_batterySaverScheduleProvider" translatable="false">
com.google.android.apps.turbo</string>
Erstellen Sie zur Überprüfung Ihr Image, flashen Sie es auf ein Gerät und rufen Sie die Einstellungen auf.
Akku > Energiesparmodus > Zeitplan für Energiesparmodus. Die Option Auf Routine basierend wird angezeigt.
Standardgrenzwert für Deaktivierung
Im Feld config_dynamicPowerSavingsDefaultDisableThreshold wird ein Akkustand angegeben, bei dem das System den Energiesparmodus deaktiviert, wenn er vom Scheduler Auf Routine basierend aktiviert wurde. Der Standardwert des Systems ist 80%, Sie können ihn aber ändern.
App-Konfiguration
In diesem Abschnitt wird beschrieben, wie Sie Ihre App für die Option Auf Routine basierend konfigurieren.
Berechtigungen
Die für eine App erforderlichen APIs zum Aktivieren des Energiesparmodus auf Routinebasis sind durch die Berechtigung android.permission.POWER_SAVER geschützt. Dies ist eine Signatur- oder privilegierte Berechtigung. Das bedeutet, dass sich die App in einem priv-app-Verzeichnis auf dem 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. So gewähren Sie beispielsweise die Berechtigung android.permission.POWER_SAVER für eine App mit dem Paketnamen com.google.android.apps.turbo:
<!-- 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 auf dem Systemimage nicht vorab gewähren, kann die App die Berechtigung nicht erhalten 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 Auf Routine basierend ordnungsgemäß funktioniert, müssen Sie die App mit der erforderlichen Berechtigung auf dem Systemimage vorinstallieren. Gewähren Sie nur einer App die Berechtigung android.permission.POWER_SAVER und lassen Sie sie die APIs für Auf Routine basierend 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.
Energiesparmodus auf Routinebasis auslösen
In diesem Abschnitt wird beschrieben, wie Ihre App den Energiesparmodus Auf Routine basierend 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 auszulösen:
public boolean setDynamicPowerSaveHint(boolean powerSaveHint, int disableThreshold)
Wenn die Option für den Energiesparmodus Auf Routine basierend 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 sicher deaktiviert werden kann, wenn die App nicht mit dem System kommunizieren kann.
Diese API unterliegt denselben Nutzerüberschreibungen und der gleichen Energiesparmodus-Pausierung wie der prozentuale automatische Energiesparmodus. Weitere Informationen finden Sie in der API-Dokumentation.
Prüfen Sie, ob die APIs erfolgreich aufgerufen wurden, indem Sie globale Einstellungen abfragen, um
zu bestätigen, dass sich der Wert der zugrunde liegenden Einstellung gemäß den API-Aufrufen geändert hat.
Wenn Sie beispielsweise den Energiesparmodus Auf Routine basierend 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 diesem 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 der OEM das Verhalten bestimmt, das den Energiesparmodus Auf Routine basierend 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:
- Auf Prozentsatz basierend:Wenn Sie in der UI Zeitplan für Energiesparmodus die Option Auf Prozentsatz basierend auswählen und 15 % festlegen, wird der Energiesparmodus nur dann automatisch aktiviert, wenn der Akkustand 15 % erreicht.
- Auf Routine basierend:Wenn Sie in der UI Zeitplan für Energiesparmodus die Option Auf Routine basierend auswählen, wird der Energiesparmodus aktiviert, wenn die App die API mit
trueaufruft. Außerdem wird der Energiesparmodus automatisch deaktiviert, wenn das Gerät bis zum angegebenen Grenzwert aufgeladen und vom Stromnetz getrennt wird. - Keine:Wenn Sie in der UI Zeitplan für 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, Einstellungen oder andere Methoden), bleibt er deaktiviert, bis Sie ihn entweder manuell wieder aktivieren oder das Gerät an eine Stromquelle anschließen.