有效的Android wifi扫描

时间:2013-06-09 08:13:50

标签: android

据我之前的帖子所理解,完成主动wifi扫描(startScanActive())的时间应该在0.7秒左右,但在我的手机上它仍然与被动扫描(startScan())相同。另外我看不到隐藏的SSID。有没有其他方法可以更快地获得wifi扫描结果和隐藏的SSID?

1 个答案:

答案 0 :(得分:0)

主动和被动扫描的某些背景:

主动扫描通过发送探测请求来主动扫描所有非被动通道,因此花费在每个通道上的时间很短。被动扫描通常用于不允许进行主动扫描的DFS信道,因此设备必须等待一个信标间隔才能找到该信道上的所有AP。整体扫描被动通道应该比扫描主动通道花费更多时间

以您为例,您应该能够在android开发人员API参考中使用以获取扫描结果:

Request a scan for access points. Returns immediately. The availability of the 
results is made known later by means of an asynchronous event sent on 
completion of the scan.

To initiate a Wi-Fi scan, declare the Manifest.permission.CHANGE_WIFI_STATE 
permission in the manifest, and perform these steps:

Invoke the following method: ((WifiManager) 
getSystemService(WIFI_SERVICE)).startScan()
Register a BroadcastReceiver to listen to SCAN_RESULTS_AVAILABLE_ACTION.
When a broadcast is received, call: ((WifiManager) 
getSystemService(WIFI_SERVICE)).getScanResults()

startScanActive在android参考中不是公开的API。我建议不要使用它。如果必须使用它,请参考此-https://github.com/mozilla/MozStumbler/issues/40

参考:

https://developer.android.com/reference/android/net/wifi/WifiManager#startScan() https://developer.android.com/reference/android/net/wifi/WifiManager#getScanResults() https://github.com/mozilla/MozStumbler/issues/40