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.
Подробнее о подключении к прямому протоколу Wi-Fi от Android здесь.
2) Прямое открытие WiFi возвращает String fullDomain
, если оно содержит _ipp
- это, скорее всего, принтер.
Ответ 2
Я обнаружил, что есть свойство, хорошее для фильтрации.
WifiP2pDevice.primaryDeviceType
Вы можете найти тип устройства здесь: https://ndeflib.readthedocs.io/en/stable/records/wifi.html#primary-device-type
![enter image description here]()
отредактированный
Он обнаружил, что primaryDeviceType представляет собой строку чисел, подобную этой: 7-0050f204-1
Пожалуйста, обратитесь к спецификации Wifi Alliance по этой ссылке: https://www.wi-fi.org/file/wi-fi-simple-configuration-technical-specification-v206