簡體   English   中英

Android Wi-Fi掃描:從ScanResult過濾打印機

[英]Android Wi-Fi Scan: Filter printers from ScanResult

我正在開發一個需要掃描公共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/1705073https://support.hp.com/rs-en / document / c04577030 )。


2) 有什么方法可以檢查ScanResult是否屬於打印機

到目前為止,我只能想到過濾常見的SSID名稱,但這不會非常有效或可靠。

謝謝你的任何建議。

1)並非所有打印機都支持WiFi Direct協議 ,HP支持此功能以及您提到的專有協議(HP Wireless Direct),但如果沒有HP軟件,您的設備可能不支持它。

了解更多關於連接到wifi直連協議在Android 這里

2) WiFi直接發現返回String fullDomain ,如果它包含_ipp - 那很可能是打印機。

我發現有一個屬性,適合過濾。

WifiP2pDevice.primaryDeviceType

您可以在此處找到設備類型: https//ndeflib.readthedocs.io/en/stable/records/wifi.html#primary-device-type

在此輸入圖像描述


編輯

它發現primaryDeviceType是一串數字,如下所示:7-0050f204-1

請參閱此鏈接中的Wifi Alliance規范: https//www.wi-fi.org/file/wi-fi-simple-configuration-technical-specification-v206

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM