2015-01-30 5 views
12

Ich versuche zu finden, ob ich Android eingebauten "Battery Saver" -Modus programmgesteuert aktivieren und/oder deaktivieren kann.Programmatisch aktivieren/deaktivieren "Battery Saver" -Modus

Alle offiziellen Ansätze oder Tricks sind willkommen.

Als Referenz hier ist, wie es in 5.0 Standard UI folgende Android tun: http://www.androidcentral.com/android-50-lollipop-basics-how-get-more-life-between-charges-battery-saver

Ich weiß, man kann es detect - das ist nicht das, was ich bin nach.

Vielen Dank.

+0

Sie können den Energiesparmodus nicht programmgesteuert einschalten. Es verursacht Sicherheitslücken. Nur der Telefonbenutzer kann den Modus ändern. Anwendungen können den Energiesparmodus nicht ändern – mertyildiran

+1

Vielen Dank @MehmetMertYidiaran. Für weitere Informationen, haben Sie weitere Informationen/Links darüber, wie oder welche "Sicherheitsverletzungen" dadurch verursacht werden könnten? –

+1

"Sicherheitslücken": Ich meine, denke an das Szenario Ich bin der Telefonbenutzer und ich spiele ein Spiel auf meinem Handy. Ihre Anwendung wird im Hintergrund ausgeführt und wechselt dann plötzlich in den Energiesparmodus. Auf einmal wird meine Leistung sinken, mein Display wird dunkler und vielleicht werden sogar meine Apps abstürzen. Aus diesem Grund bedeutet es ein großes Risiko für Benutzer und Android nicht zulassen, Batteriesparmodus programmgesteuert zu ändern. – mertyildiran

Antwort

13

Sie können Battery Saver programmgesteuert auf gerooteten Geräten aktivieren/deaktivieren. Sie müssen den low_power Wert in global Tabelle, in /data/data/com.android.providers.settings/databases/settings.db Datei bearbeiten.

Wenn Ihr Gerät settings Befehl unterstützt, können Sie (als root) ausführen:

settings put global low_power 1 

in den Energiespar zu ermöglichen und

settings put global low_power 0 

sie zu deaktivieren. Wenn es nicht verwenden sqlite3 Befehl:

sqlite3 /data/data/com.android.providers.settings/databases/settings.db "update global set value='1' where name='low_power';" 
sqlite3 /data/data/com.android.providers.settings/databases/settings.db "update global set value='0' where name='low_power';" 

Denken Sie daran, dass Sie Ihr Telefon aus dem PC zuerst trennen müssen, sonst System Energie sparen deaktivieren. Verwenden Sie ADB über WiFi oder Android Terminal (Emulator).

UPDATE:

Die sqlite3 Methode scheint nicht mehr zuverlässig.

Ich bin mir nicht sicher, ob android.os.action.POWER_SAVE_MODE_CHANGED Broadcast gesendet wird. Vielleicht haben Sie es manuell zu senden, wie im Code von here:

private static String COMMAND_ENABLE = "settings put global low_power 1\n" + "am broadcast -a android.os.action.POWER_SAVE_MODE_CHANGED --ez mode true\n"; private static String COMMAND_DISABLE = "settings put global low_power 0\n" + "am broadcast -a android.os.action.POWER_SAVE_MODE_CHANGED --ez mode false\n";

Auch ist es, dass ein neuer Eintrag in power_saving Einstellungen Datenbank erschien berichtet worden, aber in Android 6.0.1 Ich habe nicht geschafft, finde es. In Android 7.1.1_r13 wird low_power weiterhin intern verwendet (zB here), kann aber in einigen Android-Versionen geändert werden. Möglicherweise möchten Sie die Änderungen z. this und this Datei.

+0

Wie bearbeite ich den low_power-Wert in der globalen Tabelle in der Datei /data/data/com.android.providers.settings/databases/settings.db? Haben Sie den Code dafür? Ist diese Antwort auch noch relevant? – Rosenpin

+1

@Rosenpin Ich habe gerade auf Android 6.0.1 überprüft es funktioniert immer noch. Wenn Java-Code Linux-Shell-Befehle unter Android ausführen soll, sehen Sie sich z. http://stackoverflow.com/a/9194787/5108318 – pzmarzly

+0

Super! Danke. – Rosenpin

1

Sie können nicht, ohne Ihr Telefon zu verwurzeln. Ich bin mir nicht sicher, warum dies der Fall ist, insbesondere, wenn Ortungsdienste jetzt zum Anzeigen von Scan-Ergebnissen seit SdkVersion 23+ erforderlich sind.

Dieses Problem ist sehr aufschlussreich. https://code.google.com/p/android/issues/detail?id=185370

Die beste Antwort ist, dass Anwendungsentwickler gezwungen sind, Quellennetzwerkstandort für ihre Google Overlords zu quellen. Beachten Sie, dass das Betriebssystem selbst keine Probleme hat, Scan-Ergebnisse anzuzeigen, ohne dass Standortdienste aktiviert sind.

aufschlussreich, dass es keine Möglichkeit, auf Ortungsdienste ohne GPS zu machen ist, wo die Ortungsdienste deaktiviert sind. Dieser zweistufige Shuffle ist ein wichtiges Qualitätsproblem für Benutzer. Schalten Sie die Standortdienste ein und schalten Sie GPS aus.

Dit Raum, mehr Schloss downs auf dem Weg.

Verwandte Themen