我正在使用以下代码查找我附近的所有访问点。
我们通过以下方式启动扫描仪
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频带的方法。有可能吗?
答案 0 :(得分:2)
在ScanResult
的frequency
字段中,您可以确定AP的频带。
具体来说,如果frequency
> 5000,频带将为5GHz,如果3000> frequency
> 2000(大约2400),则频带将为2.4GHz。
根据802.11 standard,它指定5GHz频带的起始频率为5000MHz,而2.4GHz频带的起始频率为2047MHz,从ScanResult#frequency
获得的频率将有所不同,因为它们是不同的信道内。
将起始(基准)频率转换为中心(结果)频率的具体公式为
freqCenter = freqStart + 5 * channelNumber
这样,您可以得出AP的通道号。