Подтвердить что ты не робот

Программно включить/отключить режим "Battery Saver"

Я пытаюсь найти, могу ли я включить и/или отключить Android встроенный режим "Battery Saver" программно.

Приветствуются любые официальные подходы или обман.

Для справки, вот как это сделать после стандартного пользовательского интерфейса Android в 5.0: http://www.androidcentral.com/android-50-lollipop-basics-how-get-more-life-between-charges-battery-saver

Я знаю, что вы можете обнаружить его - это не то, что я хочу.

Спасибо всем.

4b9b3361

Ответ 1

Вы можете включить/отключить функцию экономии заряда батареи программно на устройствах с root-доступом. Вам необходимо отредактировать значение low_power в таблице global, в файле /data/data/com.android.providers.settings/databases/settings.db.

Если ваше устройство поддерживает команду settings, вы можете выполнить (с правами root):

settings put global low_power 1

для включения энергосбережения и

settings put global low_power 0

чтобы отключить его. Если это не так, используйте команду sqlite3:

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';"

Помните, что сначала вы должны отключить телефон от ПК, в противном случае система отключит функцию энергосбережения. Используйте ADB через WiFi или Android-терминал (эмулятор).

UPDATE:

Метод sqlite3, похоже, больше не является надежным.

Я не уверен, что отправляется трансляция android.os.action.POWER_SAVE_MODE_CHANGED. Возможно, вам придется отправить его вручную, как в коде здесь:

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";

Также сообщалось, что в базе данных настроек появилась новая запись power_saving, однако в Android 6.0.1 мне не удалось ее найти. В Android 7.1.1_r13 low_power все еще используется для внутреннего использования (например, здесь), однако в некоторых версиях Android оно может измениться. Вы можете продолжать проверять изменения, например, этот и этот файл.

Ответ 2

Вы не можете не укоренить свой телефон. Я не уверен, почему это так, особенно если теперь услуги определения местоположения необходимы для просмотра результатов сканирования с SdkVersion 23+.

Эта проблема очень показательна. https://code.google.com/p/android/issues/detail?id=185370

Лучший ответ - разработчики приложений вынуждены толковать исходное сетевое местоположение для своих пологов Google. Обратите внимание: сама ОС не вызывает проблем с отображением результатов сканирования без служб определения местоположения.

Выяснилось, что нет способа включить службы определения местоположения без GPS, если службы определения местоположения неактивны. Этот двухступенчатый перетасовка является основным качеством проблем для пользователей. Включите службы определения местоположения, затем отключите GPS.

Следите за этим пространством, больше блокировок на пути.