Android 上的 WebUsb API

问题描述

我正在开发一个 PWA,它应该通过 Android 9.0 平板电脑通过 USB 与自定义设备进行通信。

当我第一次尝试声明一个接口时,PWA 无法声明它,因为它说接口很忙,如果我尝试通过本机应用程序使用 USB 设备,它工作正常。 我尝试通过本机应用程序使用 USB 设备,当我断开与本机应用程序的连接时,我能够通过 PWA 声明该接口。

  • 我发现它可能无法工作,因为 android 设备自动声明接口,我可以直接从 PWA 做一些事情来声明使用的接口吗?
  • 如果不是,它是否适用于串行 API?
  • 我对设备有一定的控制权,也许我应该要求它实现另一个我可以声明的接口?

感谢您的帮助!

解决方法

您可能遇到的是 Android 内核驱动程序或其他已声明该接口的本机应用程序。在 Android 上的 WebUSB 实现中,Chrome 当前在声明接口时不会尝试分离其他驱动程序。下面的问题跟踪考虑是否应该。

https://bugs.chromium.org/p/chromium/issues/detail?id=1099521

如果您可以向设备添加非标准 USB 接口类(例如,CDC 或打印机)的接口,则可以避免系统自动向其附加驱动程序。