已知的SSIS无线网络进出范围时是否有通知方法?

12
我想编写一个应用程序,当已知的WiFi网络进入或离开范围时执行操作。
例如,假设我的家庭WiFi网络的SSID是“WifiHome”,我想在设备无法检测到此特定网络时发出通知“您刚刚离开家!”(或者在设备重新检测到此网络信号时发出“您刚刚回到家”)。
我的问题是: 是否可以在不频繁轮询可用网络列表的情况下监听这些更改?
1个回答

13

您应该听取广播事件SCAN_RESULTS_AVAILABLE_ACTION。每次Wi-Fi扫描完成后都会发送此事件。当出现这种情况时,只需通过WifiManager的getScanResults获取扫描结果即可。

当Wi-Fi处于活动状态时,您将每隔几秒钟收到此广播。但是,没有办法配置此间隔,我猜测每个制造商可能会更改此间隔。

您可以使用WifiManager的startScan手动触发Wi-Fi扫描。


1
但是如果我不想手动扫描,我应该期望多久收到一次此广播?(以秒为单位,假设) - Avi Shukron
1
当Wi-Fi处于活动状态时,您将每隔几秒钟收到此广播。但是没有办法配置此间隔,我猜测每个制造商可能会更改此间隔。我建议引入设置X - “重新扫描之间的最大延迟”。如果您在X秒内没有收到任何扫描结果,则会强制手动重新扫描。 - inazaruk
好的。大概就这样了。最后一个问题:是否有更具体的事件表示“当前网络已断开连接”? - Avi Shukron
你应该监听 NETWORK_STATE_CHANGED_ACTION。 - inazaruk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接