我正在处理一个项目,需要扫描公共Wi-Fi接入点。
目前,我正在按以下方式过滤ScanResult
:
for (ScanResult scanResult : wifiList) {
if (!(scanResult.capabilities.contains("WEP") ||
scanResult.capabilities.contains("WPA") ||
scanResult.capabilities.contains("WPA2"))) {
openWifiList.add(scanResult);
}
}
除了我也获得附近的打印机之外,它运行良好。
在扫描时,手机未连接任何网络。
我本来以为我会得到一个与 Android 上的 Wi-Fi 设置中显示的 Wi-Fi 连接列表完全相同的列表。但是在 Wi-Fi 设置中从未显示过打印机。
因此,对于 1)我认为奇怪的是打印机根本不应该出现在 ScanResult
列表中,打印机真的应该以这种方式可见吗?
更新: 并非所有 Wi-Fi 打印机都可见,我得到了一些提示,并且似乎显示的打印机确实具有特殊功能,例如 HP 打印机支持 HP 无线直连 功能(例如请参见https://h30434.www3.hp.com/t5/Inkjet-Printing/Printer-SSID-appearing-on-my-wi-fi-list/td-p/1705073 和 https://support.hp.com/rs-en/document/c04577030)。
而 2)是否有任何方法可以检查 ScanResult
是否属于打印机?
到目前为止,我只能考虑过滤常见的 SSID 名称,但这不会非常高效或可靠。
感谢所有建议。