如何扫描wifi或检查wifi是否为2.4 GHz频段?

时间:2018-11-15 14:45:44

标签: android android-wifi wifimanager

在我的应用程序( MIN SDK 19 )中,我需要列出来自2.4GHz频段的所有wifi,并区分来自5ghz频段的所有wifi。

我找到了这篇文章,但它与我需要的内容并不完全一致,因为似乎已为Android API中的开发人员删除或隐藏了代码: Scanning for wifi signals only in 2.4Ghz band

在这里您可以找到频率列表: Android wifi getting frequency of the connected Wifi

即使在这里: https://en.wikipedia.org/wiki/List_of_WLAN_channels#2.4_GHz_(802.11b/g/n/ax)

我不了解所有这些频率,因为使用WifiManager会以5 GHz的频率返回我低于2500的频率值。

我需要知道如何获得wifi 2.4GHz频段。

1 个答案:

答案 0 :(得分:0)

2.4 GHz 网络的频率在 2400 到 2500 MHz 范围内。

扫描 WiFi 网络后,您会得到一个类型为“ScanResult”的列表,您可以迭代此列表并检查每个元素。

// Get WiFi Scan results
val wifiManager = this.getSystemService(Context.WIFI_SERVICE) as WifiManager
val results = wifiManager.scanResults

// Create a new list to store the filtered WiFis
val wifi24Only = ArrayList<ScanResult>()

// Check each 'frequency' property and add to the list if it is in 2.4 GHz range
for (wifi in results) {
    if (wifi.frequency in 2400..2500) {
        wifi24Only.add(wifi)
    }
}

// The list has only the scanned WiFis which are in the 2.4GHz range
print(wifi24Only)

观察:您必须创建一个新列表(如“wifi24Only”),因为您不应更改“结果”的值,因为 wifiManager 仍在使用它。