我的目标是能够扫描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并调查情况(仍然不利于电池寿命,但效果却不那么理想) 。

07-24 22:12