如何以编程方式修改Wi-Fi睡眠策略?

时间:2011-12-28 04:57:16

标签: android

我希望在设备进入睡眠模式时启用Wi-Fi,我尝试了几个选项,但没有任何功能像获取Wi-Fi锁定和启用Wi-Fi一样。这些选项不起作用然后我尝试使用唤醒锁定,当我的应用程序在前台运行时,这是完美的工作,但是当应用程序在后台运行时,一段时间后出现过多的唤醒锁定错误并且应用程序被破坏并且在此之上我不能一直使用唤醒锁,因为它使电池变干。实际要求是我的应用程序应该全天候运行并且与服务器的连接始终保持打开,因为服务器可以随时发送数据,但是当设备进入睡眠模式时wi-fi正在关闭,因此我需要将wi-fi睡眠策略设置为从未启动我的应用程序,并在应用程序被销毁时恢复正常策略。我尝试在主要活动中跟踪代码并运行应用程序并允许设备进入睡眠模式,并且在一段时间后连接仍然关闭:

Settings.System.putInt(getContentResolver(),
Settings.System.WIFI_SLEEP_POLICY, 
Settings.System.WIFI_SLEEP_POLICY_NEVER);

所以请帮我解决这个问题。

2 个答案:

答案 0 :(得分:2)

使用import static android.provider.Settings.System.WIFI_SLEEP_POLICY;代替名称字符串Settings.System.WIFI_SLEEP_POLICY

效果很好。

答案 1 :(得分:0)

在我的情况下, Settings.System.WIFI_SLEEP_POLICY 不起作用。我能够使用 PowerManager

保持wi-fi
final PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "My Tag");
wl.acquire();

然后在 OnDestroy()中调用

wl.release();