【问题标题】:Android Wi-Fi Scan: Filter printers from ScanResultAndroid Wi-Fi 扫描:从 ScanResult 中过滤打印机
【发布时间】:2017-12-16 17:10:30
【问题描述】:

我正在处理一个需要扫描公共 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 名称,但这不会非常有效或可靠。

感谢您的任何建议。

【问题讨论】:

  • 检查ScanResult的capabilities字段是否有帮助。
  • @AshishPathak 这当然是我尝试的第一件事。它只显示能力“ESS”,这也是“普通”接入点的能力。

标签: android android-wifi wifimanager network-printers


【解决方案1】:

1) 并非所有打印机都支持WiFi Direct protocol,HP 支持这个以及您提到的他们的专有协议(HP Wireless Direct),尽管您的设备可能不支持它如果没有 HP 软件。

详细了解如何从 Android here 连接到 WiFi Direct 协议。

2) WiFi direct discovery 返回 String fullDomain,如果它包含 _ipp - 那很可能是打印机。

【讨论】:

  • 感谢@auval 的建议!我将尝试使用这个,但是,它需要设置另一个回调,我需要以某种方式使用从广播接收器接收到的 ScanResults 进行验证,对吗?我会测试它,但我认为这对这个项目来说开销太大了。如果“_ipp”只是一种指标,我想我也可以过滤以“HP-”或类似名称开头的 SSID
  • 我向您指出的 API (P2P) 将显示支持 WiFi 直连的设备。使用您通过标准 WiFi 管理器获得的列表来获取所有设备的列表,然后您可以使用 P2P API 减去打印机(比较 SSID)。
  • SSID 不是您可以依赖的东西。 “HP-”可能与任何 HP 硬件有关,不一定与打印机有关。
【解决方案2】:

我发现有一个属性,很适合过滤。

WifiP2pDevice.primaryDeviceType

您可以在此处找到设备类型: https://ndeflib.readthedocs.io/en/stable/records/wifi.html#primary-device-type


已编辑

发现primaryDeviceType是一串数字,如下: 7-0050f204-1

请参阅此链接中的 Wifi 联盟规范: https://www.wi-fi.org/file/wi-fi-simple-configuration-technical-specification-v206

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-20
    • 2021-09-16
    • 1970-01-01
    • 2013-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多