How to access Power Saving Mode Programmatically in Android?

你说的曾经没有我的故事 提交于 2019-12-12 09:26:59

问题


I need to access to programmatically turn ON & OFF Power Saving Mode in android. Is there any API for this ? As I can see Power Saving mode option is not available for all mobile devices, is there any code to check these settings availability and if available then turn it ON and OFF ?

Also is there any work around ?


回答1:


If you want to test the Power Saving Mode (PSM):

The following works with Android Studio 3.4.1 and a Google Pixel 2 XL phone:

$ adb shell dumpsys battery unplug # a charging device cannot enter PSM
$ adb shell settings put global low_power 1 # enter Power Saving Mode (PSM)

This only works on devices that has the standard Power Saving Mode, like Samsung's, but not Huawei's, for example. On some Samsung devices, this setting is stored in global setting keyed psm_switch, as mentioned above.

You can leave PSM by setting low_power to 0 or by enabling charging again with:

$ adb shell dumpsys battery reset

Source: https://developer.android.com/training/monitoring-device-state/doze-standby#testing_doze_and_app_standby




回答2:


It's bad practice to control the user's device settings from your app.

Rather consider suspending background services when battery levels are low.

Or to notify the user of low battery power and advising the user to switch of unnecessary settings like Bluetooth or WiFi.




回答3:


Most devices won't have a built-in power-saver API, so you could try to make your own power-saver mode by turning off the bluetooth if it's on, the wi-fi, etc, deactivating location in settings, or checking for other power-eating options enabled.




回答4:


There are no available API's to do this in android SDK. however You can control/save the power by Turning off Blutooth,Wi-Fi and other unused sevices inside your coding.




回答5:


You can't set the power saving mode programmatically. Allowing this would be a bad idea.

On certain Samsung devices you can check if it is enabled:

final String result = Settings.System.getString(getContentResolver(), "psm_switch");
Log.v("Debug", "Powersaving active: " + TextUtils.equals(result, "1"));

See this for more info: https://stackoverflow.com/a/39296959/3600178



来源:https://stackoverflow.com/questions/23195469/how-to-access-power-saving-mode-programmatically-in-android

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!