Cordova 检测切换音频模式 - 内置扬声器到蓝牙扬声器

Cordova detect switch audio mode - built-in speaker to bluetooth speaker

我用 Cordova (7.1.0) and I use the web audio API 构建了一个音乐网络应用程序来管理声音。我的问题是:

如何查看播放器选择了哪个音源?内置音频VS蓝牙音频

例如在 iPhone 上,在玩游戏时我可以 select 直接通过我的设备扬声器(内置扬声器)播放声音,或者我可以切换到我的蓝牙扬声器。当用户从一种模式切换到另一种模式时,我如何通过 JavaScript 检查?

我找到了一个关于监听耳机状态(插入与否)的Cordova plugin。这适用于有线耳机,但无法检测内置扬声器何时切换到蓝牙扬声器。

我找到了一个关于监听蓝牙状态(连接与否)的 Cordova plugin。但这并没有告诉我用户何时切换模式...

欢迎提出任何想法!

您可能正在寻找此 Cordova 插件? https://github.com/saghul/cordova-plugin-audioroute

它应该挂接到 AVAudioSessionRouteChangeNotification 并检测系统音频路由何时发生变化。根据自述文件,您应该能够添加插件,然后在您的项目中放置一个事件侦听器,如下所示:

document.addEventListener('audioroute-changed',
  function(event) {
    console.log('Audio route changed: ' + event.reason);
    // code for stuff you want to do
  }
);

AVAudioSessionRouteChangeNotification 在类似的问题中也提到了这里: Detect (listen to) audio route change in iOS 7

AVAudioSessionRouteChangeNotification 文档: https://developer.apple.com/documentation/avfoundation/avaudiosessionroutechangenotification