1

我试图找到一种方法来确定 WebUSB 是否是同一多功能设备(即打印机)的一部分。作为一个例子,我可以想象包含音频和 WebUSB 功能的设备。对于音频部分,我可以使用以下 API:

navigator.mediaDevices

返回deviceIdgroupId。但是,在 WebUSB 的情况下,没有可以用于匹配两个设备的此类组标识符。唯一可以做的就是请求设备:

var device = navigator.usb.requestDevices({filters:[]})

并检查序列号 - 但它无助于匹配由两个 API 检索到的设备。我在这里找到了关于设备唯一标识符的旧讨论: https ://github.com/w3ctag/design-reviews/issues/64

但是,这似乎没有任何结论。是否有任何机制可以验证 WebUSB 和 WebAudio(或其他 API)是否属于同一硬件?

4

1 回答 1

1

这是一个非常有趣的问题,我们(在 Chromium 项目中)还没有机会充分探索。理想情况下,您将能够按设备对各种 API 返回的接口进行分组。不幸的是,浏览器中这些 API 的实现几乎完全不了解彼此,并且依赖于可能彼此不了解的不同操作系统 API。长话短说,要可靠地建立这种分组需要做很多工作。

也就是说,WebUSB 和 WebAudio API 都提供对某些设备属性的访问,因此应该可以根据设备名称等内容建立松散的关联。

于 2020-01-15T20:05:16.413 回答