Android Wi-Fi Scan: фильтр принтеров от ScanResult
Я работаю над проектом, который должен сканировать общественные точки доступа Wi-Fi.
В настоящее время я фильтрую ScanResult
такой:
for (ScanResult scanResult : wifiList) {
if (!(scanResult.capabilities.contains("WEP") ||
scanResult.capabilities.contains("WPA") ||
scanResult.capabilities.contains("WPA2"))) {
openWifiList.add(scanResult);
}
}
он работает нормально, за исключением того, что я также получаю принтеры, которые находятся рядом.
во время сканирования телефон не подключен к сети.
Я бы предположил, что я получаю список, который идентичен списку соединений Wi-Fi, который показан в настройках Wi-Fi на Android. Но в Настройка 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 ответов
1) Не все принтеры поддерживают протокол WiFi Direct, HP поддерживает это, а также их собственный протокол, который вы упомянули (HP Wireless Direct), хотя ваше устройство, вероятно, не поддерживает его без программного обеспечения HP.
Узнайте больше о подключении к протоколу WiFi Direct с Android здесь.
2) WiFi direct discovery возвращает String fullDomain
, если он содержит _ipp
- это, скорее всего, принтер.