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 dem System Signale für eine intelligentere Planung des Energiesparmodus senden. 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>
Nun sollte auf dem Smartphone die Option Basierend auf Abläufen 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“
Das neue Feld config_dynamicPowerSavingsDefaultDisableThreshold
gibt eine
Akkustand, bei dem das System den Energiesparmodus deaktiviert, falls er aktiviert war
durch den Planer basierend auf dem Ablauf. 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 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. 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 auf Routine basierend ordnungsgemäß funktioniert, müssen Sie die App mit der erforderlichen Berechtigung vorab auf dem System-Image installieren. Nur einer App das POWER_SAVER
zuweisen
und erlauben, basierend auf Routinen APIs zu steuern. Verhalten von
die Funktion, wenn mehr als eine App versucht, die Berechtigung zu verwenden und APIs zu verwenden sind
nicht unterstützt und nicht angegeben.
Energiesparmodus aktivieren
APIs
Wenn die Einrichtung bisher erfolgreich war, sollte die in der Konfiguration angegebene OEM-App die entsprechende Methode in PowerManager aufrufen können, Energiesparmodus:
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. Gib disableThreshold
an, damit die App nicht mit
weiß das System immer noch, bei welchem Akkustand es sich bedenkenlos
den Energiesparmodus ausschalten.
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 wurden, fragen Sie die Einstellungen global ab, um zu prüfen, ob Wert der Sicherungseinstellung geändert entsprechend den API-Aufrufen.
Beispiel: Der Nutzer hat den Routine-Energiesparmodus ausgewählt und die App wird
setDynamicPowerSaveHint(true, 10)
aufrufen, sollten die globalen Einstellungen
diese Werte:
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 Methode, um diese Funktion zu bestätigen. mit welchem Verhalten ein OEM entscheidet, wann der routinemäßige Energiesparmodus aktiviert wird . OEMs sind daher für das Testen ihrer Integration verantwortlich, um sicherzustellen, die Erwartungen erfüllt. Prüfen Sie insbesondere, ob das Gerät die folgenden Aufgaben erfüllen kann:
- Der Nutzer wählt in der Benutzeroberfläche für den Zeitplan des Energiesparmodus Basierend auf dem Prozentsatz und dann 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 die Option Nach Ablauf aus. Wenn die App die API mit
true
aufruft, wird der Energiesparmodus aktiviert. Außerdem Der Energiesparmodus schaltet sich automatisch aus, wenn das Gerät zu den angegebenen Schwellenwert und das Gerät ist ausgesteckt. - Der Nutzer wählt in der Benutzeroberfläche für den Energiesparzeitplan keine aus. Energiesparmodus sollte NIE automatisch aktiviert werden.
- Wenn die App den Energiesparmodus aktiviert und der Nutzer ihn manuell überschreibt, um ihn wieder zu deaktivieren (z. B. über die Schnelleinstellungen oder die Einstellungen), sollte er AUSGESCHALTET bleiben, bis der Nutzer ihn entweder manuell wieder einschaltet oder das Gerät anschließt.