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

soe*_*oey 10 android network-printers wifimanager android-wifi

我正在开发一个需要扫描公共Wi-Fi接入点的项目.

目前,我正在过滤ScanResult这样的:

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

              openWifiList.add(scanResult);    

  }
}
Run Code Online (Sandbox Code Playgroud)

它工作正常,但我也得到附近的打印机.

扫描时,手机未连接到任何网络.

我原以为我得到的列表与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名称,但这不会非常有效或可靠.

谢谢你的任何建议.

Ami*_*val 4

1) 并非所有打印机都支持WiFi Direct 协议,HP 支持此协议以及您提到的其专有协议(HP Wireless Direct),尽管您的设备在没有 HP 软件的情况下可能不支持它。

在此处了解有关从 Android 连接到 WiFi Direct 协议的更多信息。

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