首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让AVAudioSession在静默模式下与.mixWithOthers一起工作

如何让AVAudioSession在静默模式下与.mixWithOthers一起工作
EN

Stack Overflow用户
提问于 2020-05-21 16:54:20
回答 1查看 331关注 0票数 1

我正在使用AVAudioEngine在Swift (Xcode11.5)中编写一个iOS应用程序

一切正常,但当iPhone/iPad关闭静音按钮时,我无法让它与其他音频应用程序一起播放。

有了这个:

代码语言:javascript
复制
try AVAudioSession.sharedInstance().setCategory(.playback)

我的音频可以在静音按钮打开或关闭的情况下工作,但如果我正在播放来自Apple Music的内容,当我点击播放我的音频时,Apple Music会暂停。

有了这个:

代码语言:javascript
复制
try AVAudioSession.sharedInstance().setCategory(.ambient, options: .mixWithOthers)

我的音频适用于Apple Music,但如果静音按钮关闭,则无法播放。

有了这个:

代码语言:javascript
复制
try AVAudioSession.sharedInstance().setCategory(.playback, options: [.mixWithOthers])

有了.mixWithOthers没有什么不同。

我确信有一个选项组合,可以让它在静音按钮打开或关闭的情况下工作,并且不会停止其他音频播放,但我找不到它!

TIA寻求任何建议。

伊恩

EN

回答 1

Stack Overflow用户

发布于 2020-05-28 08:20:35

我已经弄明白了这一点,正如matt指出的,我做错了什么!我不能在这里发布我的代码,因为它太大了。基本上,我已经编写了处理所有音频文件的音频类,声明了引擎AVAudioEngine();nodes,AVAudioPlayerNode();并完成了所有播放等工作。

我的错误是把这类东西放在那个类中,显然放错了地方:

代码语言:javascript
复制
do {
  let audioSession = AVAudioSession.sharedInstance()
  try audioSession.setActive(false)
  if resetOptions.muteOtherApps {
    try audioSession.setCategory(.playback, options: [])
  } else {
    try audioSession.setCategory(.playback, options: [.mixWithOthers])
  }
} catch {
  print("Audio error")
}

因为我让用户在这些选项之间进行选择,所以我可以方便地将它放在我的主ViewController类中。但是,如果它是为应用程序设置的,从我读到的内容来看,一个很好的位置是在didFinishLaunchingWithOptions函数的AppDelegate.Swift中。主要的一点,至少对我有效的是,将这些东西与实际管理音频的类分开。

所以,谢谢,马特。

伊恩

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61930764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档