Я пытаюсь отвечать на события смены устройства с помощью 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 м