【问题标题】:WebUSB and groupId identificationWebUSB 和 groupId 识别
【发布时间】:2020-01-16 04:05:16
【问题描述】:

我正在尝试寻找一种方法来识别 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)是否属于同一硬件?

【问题讨论】:

    标签: web-audio-api webusb


    【解决方案1】:

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

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

    【讨论】:

    • 对于连接的一个设备来说,这是一项简单的任务 - 但我可以想象多个相同类型的设备连接到主机的情况。在这种情况下,唯一的唯一标识符将是序列号。虽然通过 WebUSB 很容易获得序列号,但无法从其他 API(如 WebAudio)访问它。我注意到 WebAudio 使用 GUID 来创建 deviceId - 所以它似乎更多地依赖操作系统提供的信息而不是硬件本身(在音频的情况下完全有意义 - 并非所有音频设备都有序列号)。
    猜你喜欢
    • 1970-01-01
    • 2018-07-31
    • 2016-04-05
    • 2016-02-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-02
    • 2020-03-11
    • 1970-01-01
    相关资源
    最近更新 更多