Идентификация WebUSB и groupId - PullRequest
1 голос
/ 14 января 2020

Я пытаюсь найти способ определить, является ли WebUSB частью того же многофункционального устройства (например, принтера). В качестве примера этого я могу представить устройство, которое состоит из аудио и функциональности WebUSB. Для аудио части я могу использовать следующий API:

navigator.mediaDevices

, который возвращает deviceId и groupId . Однако в случае WebUSB нет такого группового идентификатора, который можно было бы использовать для сопоставления обоих устройств. Единственное, что можно сделать, это запросить устройство:

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

и проверить серийный номер - но это не помогает сопоставить устройство, полученное двумя API. Я нашел старое обсуждение относительно уникального идентификатора устройства здесь: https://github.com/w3ctag/design-reviews/issues/64

Однако, похоже, для этого не было никакого заключения. Есть ли механизм, который позволил бы проверить, принадлежит ли WebUSB и WebAudio (или другой API) к одному и тому же оборудованию?

1 Ответ

1 голос
/ 15 января 2020

Это действительно интересный вопрос, который у нас (в проекте Chromium) не было возможности полностью изучить. В идеале вы сможете группировать интерфейсы, возвращаемые различными API-интерфейсами, по устройствам. К сожалению, реализации этих API в браузере практически не знают друг о друге и полагаются на различные API-интерфейсы операционной системы, которые также могут не знать друг друга. Короче говоря, потребуется много работы, чтобы надежно создать такую ​​группу.

При этом API WebUSB и WebAudio предоставляют доступ к некоторым свойствам устройства и, таким образом, слабую корреляцию. должно быть возможно на основе таких вещей, как имя устройства.

...