以编程方式 enable/disable "Battery Saver" 模式
Programmatically enable/disable "Battery Saver" mode
我正在尝试寻找是否可以以编程方式启用 and/or 禁用 Android 的内置 "Battery Saver" 模式。
欢迎任何官方方法或技巧。
作为参考,以下是如何按照 Android 5.0 中的标准 UI 执行此操作:
http://www.androidcentral.com/android-50-lollipop-basics-how-get-more-life-between-charges-battery-saver
我知道你可以 detect 它 -- 这不是我想要的。
谢谢大家。
您可以在 root 设备上以编程方式enable/disable 省电模式。您必须在 /data/data/com.android.providers.settings/databases/settings.db
文件中编辑 global
table 中的 low_power
值。
如果您的设备支持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 上拔下 phone 插头,否则系统将禁用节能器。通过 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), however it may get changed in some Android release. You may want to keep checking changes in e.g. this and this file.
你不能不root你的phone。我不确定为什么会这样,特别是在 SdkVersion 23+ 之后现在需要位置服务来查看扫描结果的情况下。
这个问题很有启发性。
https://code.google.com/p/android/issues/detail?id=185370
最好的答案是应用程序开发人员被迫为他们的 google 霸主众包源网络位置。请注意,OS 本身在不打开位置服务的情况下显示扫描结果没有问题。
表明在定位服务处于非活动状态时,没有 GPS 就无法打开定位服务。这种两步随机播放是用户体验质量的主要问题。打开定位服务,然后关闭 GPS。
观看此 space,即将实施更多封锁。
我正在尝试寻找是否可以以编程方式启用 and/or 禁用 Android 的内置 "Battery Saver" 模式。
欢迎任何官方方法或技巧。
作为参考,以下是如何按照 Android 5.0 中的标准 UI 执行此操作: http://www.androidcentral.com/android-50-lollipop-basics-how-get-more-life-between-charges-battery-saver
我知道你可以 detect 它 -- 这不是我想要的。
谢谢大家。
您可以在 root 设备上以编程方式enable/disable 省电模式。您必须在 /data/data/com.android.providers.settings/databases/settings.db
文件中编辑 global
table 中的 low_power
值。
如果您的设备支持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 上拔下 phone 插头,否则系统将禁用节能器。通过 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), however it may get changed in some Android release. You may want to keep checking changes in e.g. this and this file.
你不能不root你的phone。我不确定为什么会这样,特别是在 SdkVersion 23+ 之后现在需要位置服务来查看扫描结果的情况下。
这个问题很有启发性。 https://code.google.com/p/android/issues/detail?id=185370
最好的答案是应用程序开发人员被迫为他们的 google 霸主众包源网络位置。请注意,OS 本身在不打开位置服务的情况下显示扫描结果没有问题。
表明在定位服务处于非活动状态时,没有 GPS 就无法打开定位服务。这种两步随机播放是用户体验质量的主要问题。打开定位服务,然后关闭 GPS。
观看此 space,即将实施更多封锁。