navigator.mediaDevices.ondevicechange не работает при использовании аудиоразъема - PullRequest
1 голос
/ 04 февраля 2020

Я пытаюсь отвечать на события смены устройства с помощью MediaDevice API, как показано ниже

_trackDeviceChange: function () {
        var e = this
        navigator.mediaDevices.ondevicechange = function () {
          navigator.mediaDevices.enumerateDevices().then(function (n) {
            e.get('allVideoSourceDevices').clear(),
            e.get('allAudioSourceDevices').clear(),
            e.get('allVideoSourceDevices').pushObjects(t.default.filter(n, [
              'kind',
              'videoinput'
            ])), e.get('allAudioSourceDevices').pushObjects(t.default.filter(n, [
              'kind',
              'audioinput'
            ])), e.get('videoSourceDevice') && !t.default.find(n, {
              deviceId: e.get('videoSourceDevice.deviceId'),
              kind: 'videoinput',
              label: e.get('videoSourceDevice.label')
            }) ? e.set('deviceNotFound', 'camera')  : e.get('audioSourceDevice') && !t.default.find(n, {
              deviceId: e.get('audioSourceDevice.deviceId'),
              kind: 'audioinput',
              label: e.get('audioSourceDevice.label')
            }) && e.set('deviceNotFound', 'microphone')
          })
        }
      }

Работает только для USB-устройств, не работающих с гнездами 3,5 м

1 Ответ

1 голос
/ 08 марта 2020

Мне кажется, проблема в том, что событие devicechange срабатывает только при изменении набора устройств.

Технически это не тот случай, когда вы подключаете или отключаете мини-джек и, следовательно, событие devicechange не стреляет Устройство является частью набора устройств, независимо от того, подключен кабель или нет.

Но при подключении устройства через USB набор устройств меняется, и добавляется новое устройство, которое ранее было недоступно и, следовательно, происходит событие devicechange.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...