问题描述
我正在使用 AWS 的 Chime JavaScript SDK,并且遇到了位于 addDeviceChangeObserver
上的 AudioVideoFacade
方法的问题。简而言之,当我的设备发生变化时,它似乎没有触发任何观察者方法。 (即,当我拔下耳机时,没有观察者方法触发 - 但我确认系统设置中不再列出我的设备。)
这大概是我设置观察者时的样子:
import ChimeDeviceChangeObserver from '../chime/ChimeDeviceChangeObserver';
...
audioVideo.addDeviceChangeObserver(ChimeDeviceChangeObserver);
这是我的 ChimeDeviceChangeObserver 类:
export default class ChimeDeviceChangeObserver {
audioOutputsChanged(freshAudioOutputDeviceList) {
console.log('Output list changed',freshAudioOutputDeviceList);
}
audioInputsChanged(freshAudioInputDeviceList) {
console.log('Input list changed',freshAudioInputDeviceList);
}
videoInputsChanged(freshVideoInputDeviceList) {
console.log('Video list changed',freshVideoInputDeviceList);
}
}
当我拔下/重新插入我的设备时,没有任何观察者方法按预期记录。我已经仔细检查了我的观察者方法名称是否与 AWS SDK docs 匹配,但不知道接下来要检查什么。
感谢所有帮助!
解决方法
好吧,尴尬的是,答案非常简单!
简单地说,我没有在将 ChimeDeviceChangeObserver 实例传递给 audioVideo.addDeviceChangeObserver()
之前启动它。
在我将线路设为:
audioVideo.addDeviceChangeObserver(ChimeDeviceChangeObserver);
解决方法是:audioVideo.addDeviceChangeObserver(new ChimeDeviceChangeObserver());
实例化新的类对象正确地将观察者类传递给 Chime 的 sdk,观察者方法现在可以正确触发。