我正在使用以下代码来查找我附近的所有访问点。

我们以以下方式启动扫描仪

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,我们可以获得诸如ssidbssidcapabilities等功能,但是我找不到获取ssid频段的方法。可能吗?

最佳答案

ScanResultfrequency字段中,您可以确定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的通道号。

10-08 18:40