Ответ 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 оно может измениться. Вы можете продолжать проверять изменения, например, этот и этот файл.