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

时间:2017-11-23 13:53:21

标签: ios cordova audio bluetooth web-audio-api

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

如何查看播放器选择的音频源?内置音频VS蓝牙音频。

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

我发现了Cordova plugin有关收听耳机状态(已插入或未插入)的信息。这适用于有线耳机,但它无法检测内置扬声器何时切换到蓝牙扬声器。

我发现了Cordova plugin关于收听蓝牙状态(已连接或未连接)的问题。但这并没有告诉我用户何时切换模式......

欢迎任何想法!

1 个答案:

答案 0 :(得分:1)

这个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