Android Wi-Fi扫描:从ScanResult过滤打印机

我正在研究一个需要扫描公共Wi-Fi接入点的项目。

目前,我正在像这样筛选ScanResult

 for (ScanResult scanResult : wifiList) { if (!(scanResult.capabilities.contains("WEP") || scanResult.capabilities.contains("WPA") || scanResult.capabilities.contains("WPA2"))) { openWifiList.add(scanResult); } } 

它工作正常,除了我也得到附近的打印机。

扫描时,手机没有连接到任何networking

我假定我得到的是与Android上的Wi-Fi设置中显示的Wi-Fi连接列表完全相同的列表。 但是在Wi-Fi设置中没有显示任何打印机。

所以对于1)我认为奇怪的是打印机显示在ScanResult列表中, 是否打印机真的可以这样看


更新:并不是所有的Wi-Fi打印机都可见,我对此有一些提示,而且似乎正在显示的打印机具有特殊的function,例如HP打印机支持HP Wireless Directfunction(请参阅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名称,但这不会是非常有效或可靠的。

感谢您的任何build议。

Solutions Collecting From Web of "Android Wi-Fi扫描:从ScanResult过滤打印机"

1)不是所有的打印机都支持WiFi Direct协议 ,惠普支持这一点以及您提到的专有协议(HP Wireless Direct),尽pipe如果没有惠普软件,您的设备可能不支持。

详细了解如何从Android连接到WiFi Direct协议。

2) WiFi直接发现返回String fullDomain ,如果它包含_ipp – 这很可能是打印机。