![](/img/trans.png)
[英]After Wi-Fi Scan, show current Wi-Fi list logcat on android
[英]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/1705073和https://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.