我的目标是能够扫描Wi-Fi网络中的更改(主要是检查可用的网络)。知道我正在通过注册接收者来做到这一点:
registerReceiver(wifiReceiver, new IntentFilter(WifiManager.RSSI_CHANGED_ACTION));
其中
WifiReceiver
是我的BroadcastReceiver
。问题在于它仅在手机打开时有效。一旦进入睡眠模式(通过按电源按钮或过一段时间),接收器就会停止接收。我已经在主类的onCreate中获得了唤醒锁,并在onDestroy中释放了它(这是部分唤醒锁)。另外,我已经尝试过了:
Settings.System.putInt(getContentResolver(),Settings.System.WIFI_SLEEP_POLICY, Settings.System.WIFI_SLEEP_POLICY_NEVER);
防止wifi进入睡眠状态。不幸的是,这没有帮助。
即使手机处于睡眠状态,也有可能扫描网络更改吗?我希望能够检查哪些网络在范围内(通过SSID)。也许我应该采取其他措施?
感谢您的帮助。
最佳答案
从字面上看,不是的,通常不设计硬件,也不编写低级驱动程序来使wifi在应用程序CPU处于睡眠模式时运行-与移动网络接口不同,后者旨在接收推送事件(例如电话,短信和gmail“ tickles”。
因此,您的选择是设法成功防止设备进入睡眠状态(再见电池),或者使用警报定期唤醒设备,激活wifi并调查情况(仍然不利于电池寿命,但效果却不那么理想) 。