在睡眠和唤醒设备时允许wifi数据

时间:2011-02-27 22:59:03

标签: android wifi wakelock

我搜索过,但无法找到这个问题的答案。我正在研究将一直运行的应用程序。我正在使用wifi,一切正常,直到设备休眠。一个设备发送多播数据包,另一个设备应该获取并唤醒,但事实并非如此。现在,网络线程是从我的主类StartService()启动的服务线程启动的。在服务中我得到一个wifi锁和一个wifi多播锁,以便在设备休眠时wifi和多播“应该”保持打开状态。我也尝试在混音中加入一个部分唤醒锁,但仍然无效。有任何想法吗?我正在开发两个现在运行android 2.3.3的nexus。

1 个答案:

答案 0 :(得分:1)

您需要在WakeLock中设置PowerManager.ACQUIRE_CAUSES_WAKEUP标志,但是PowerManager.ACQUIRE_CAUSES_WAKEUP标志不能与PowerManager.PARTIAL_WAKE_LOCK一起使用,但它应该与PowerManager.SCREEN_DIM_WAKE_LOCK一起使用。 当您在WakeLock上调用acquire()时,下面的代码应该唤醒设备的显示和CPU。 5秒的睡眠应该让你的WiFi有足够的时间醒来。

WakeLock lock = ((PowerManager) getSystemService(POWER_SERVICE)).newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK
                    | PowerManager.ACQUIRE_CAUSES_WAKEUP, "TAG");
lock.acquire();
try {
    Thread.sleep(5000);
} catch (InterruptedException e) {                  
}   
// do work here..
lock.release()