以编程方式启用/禁用“省电模式”模式

时间:2015-01-30 11:04:21

标签: 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 - 这不是我追求的目标。

谢谢大家。

2 个答案:

答案 0 :(得分:14)

您可以在root设备上以编程方式启用/禁用Battery Saver。您必须在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';"

<击>

请记住,您必须先从电脑上拔下手机,否则系统将禁用节能器。通过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仍在内部使用(f.e。here),但在某些Android版本中可能会更改。您可能希望继续检查f.e中的更改。 thisthis文件。

答案 1 :(得分:1)

你不能没有root你的手机。我不确定为什么会这样,特别是现在需要定位服务来查看自SdkVersion 23+以来的扫描结果。

这个问题很有启发性。 https://code.google.com/p/android/issues/detail?id=185370

最好的答案是应用程序开发人员被迫为他们的谷歌霸主挤占源网络位置。请注意,操作系统本身在没有位置服务的情况下显示扫描结果没有问题。

显示在没有位置服务处于非活动状态的GPS的情况下无法启用位置服务。这两步洗牌是用户的主要体验质量问题。打开位置服务,然后关闭GPS。

观看这个空间,途中会有更多的锁定。