我正在使用以下代码来查找我附近的所有访问点。
我们以以下方式启动扫描仪
registerReceiver(wifiReceiver, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
wifiManager.startScan();
并使用
BroadcastReceiver
获得结果BroadcastReceiver wifiReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
List<ScanResult> scanResults = wifiManager.getScanResults();
unregisterReceiver(this);
for (ScanResult result : scanResults) {
//some code...
}
}
};
现在,通过使用
ScanResults
,我们可以获得诸如ssid
,bssid
或capabilities
等功能,但是我找不到获取ssid频段的方法。可能吗? 最佳答案
在ScanResult
的frequency
字段中,您可以确定AP的频带。
具体来说,如果frequency
> 5000,则频段为5GHz;如果3000> frequency
> 2000,则频段为2.4GHz(大约2400)。
根据802.11 standard,它指定5GHz频段的起始频率为5000MHz,而2.4GHz频段的起始频率为2047MHz,从ScanResult#frequency
获得的频率将因它们所处的通道不同而有所不同。
将起始(基准)频率转换为中心(结果)频率的特定公式为
freqCenter = freqStart + 5 * channelNumber
这样,您可以得出AP的通道号。