【发布时间】:2017-12-16 17:10:30
【问题描述】:
我正在处理一个需要扫描公共 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 Wireless Direct 功能(参见例如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 名称,但这不会非常有效或可靠。
感谢您的任何建议。
【问题讨论】:
-
检查ScanResult的capabilities字段是否有帮助。
-
@AshishPathak 这当然是我尝试的第一件事。它只显示能力“ESS”,这也是“普通”接入点的能力。
标签: android android-wifi wifimanager network-printers