android - 以编程方式启用/禁用 "Battery Saver"模式

标签 android battery-saver

我正在尝试寻找是否可以通过编程方式启用和/或禁用 Android 的内置“省电”模式。

欢迎任何官方方法或欺骗。

作为引用,以下是按照 Android 5.0 中的标准 UI 执行此操作的方法: http://www.androidcentral.com/android-50-lollipop-basics-how-get-more-life-between-charges-battery-saver

我知道你可以 detect它 -- 这不是我所追求的。

谢谢大家。

最佳答案

您可以在已获得 root 权限的设备上以编程方式启用/禁用省电模式。您必须编辑 global 表中的 low_power 值,在 /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';"

<罢工>

请记住,您必须先将手机从 PC 上拔下,否则系统将禁用 Energy Saver。通过 WiFi 或 Android 终端(模拟器)使用 ADB。

更新:

sqlite3 方法似乎不再可靠了。

我不确定是否发送了 android.os.action.POWER_SAVE_MODE_CHANGED 广播。也许你必须手动发送它,就像来自 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";

此外,据报道在设置数据库中出现了一个新的 power_saving 条目,但是在 Android 6.0.1 中我还没有找到它。在 Android 7.1.1_r13 中 low_power 仍在内部使用(例如 here ),但它可能会在某些 Android 版本中发生变化。您可能希望继续检查更改,例如thisthis文件。

关于android - 以编程方式启用/禁用 "Battery Saver"模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28234502/

相关文章:

android - ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS : Need Intent to All Apps List

android - PoweSavingMode 与 App 优化

android - 前台服务在 Android 10 中被杀死

android - TabHost 中的另一个 Activity ?

android - 用户单击主页按钮后将应用程序置于最前面

java - 使用 Room 将二进制文件的链接与元数据一起存储是一种好习惯吗?

android - 如何在包含其他 View 的 LinearLayout 中画一条线?

android - 重新发布 Android 应用程序