AVAudioEngine更改了其他应用的输出路由

时间:2018-02-02 20:15:27

标签: ios audio avaudiosession avaudioengine

我看到AVAudioEngine出现了意想不到的影响,我正试图解决这个问题。当我的应用程序的引擎启动时,另一个应用程序的音频播放的路径从扬声器变为耳机。我希望其他应用继续播放扬声器。

以下是如何重现。

制作一个空应用并在下面添加UnexpectedAudio课程。在ViewController课程中添加并初始化unexpected属性(let unexpected = UnexpectedAudio()),然后在调用unexpected.start()的情节提要板中添加一个按钮。

class UnexpectedAudio {    
  let engine: AVAudioEngine

  init() {
    self.engine = AVAudioEngine()
    _ = engine.inputNode // lazily creates node
  }

  func start() {
    try! AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayAndRecord,
                                                     mode:AVAudioSessionModeDefault,
                                                     options: [.mixWithOthers])
    try! engine.start()
  }
}

运行该应用,但不要按此按钮。然后在没有插入耳机的情况下,跳转到Apple Music并播放一首歌曲。它应该出现在演讲者面前。现在,切换回您的应用程序并按下按钮。对我来说,这使得Apple Music音频切换回到耳机。

知道为什么会这样吗?我怎么能阻止路线改变?谢谢!

0 个答案:

没有答案