我正在使用AVAudioEngine在Swift (Xcode11.5)中编写一个iOS应用程序
一切正常,但当iPhone/iPad关闭静音按钮时,我无法让它与其他音频应用程序一起播放。
有了这个:
try AVAudioSession.sharedInstance().setCategory(.playback)我的音频可以在静音按钮打开或关闭的情况下工作,但如果我正在播放来自Apple Music的内容,当我点击播放我的音频时,Apple Music会暂停。
有了这个:
try AVAudioSession.sharedInstance().setCategory(.ambient, options: .mixWithOthers)我的音频适用于Apple Music,但如果静音按钮关闭,则无法播放。
有了这个:
try AVAudioSession.sharedInstance().setCategory(.playback, options: [.mixWithOthers])有了.mixWithOthers没有什么不同。
我确信有一个选项组合,可以让它在静音按钮打开或关闭的情况下工作,并且不会停止其他音频播放,但我找不到它!
TIA寻求任何建议。
伊恩
发布于 2020-05-28 08:20:35
我已经弄明白了这一点,正如matt指出的,我做错了什么!我不能在这里发布我的代码,因为它太大了。基本上,我已经编写了处理所有音频文件的音频类,声明了引擎AVAudioEngine();nodes,AVAudioPlayerNode();并完成了所有播放等工作。
我的错误是把这类东西放在那个类中,显然放错了地方:
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中。主要的一点,至少对我有效的是,将这些东西与实际管理音频的类分开。
所以,谢谢,马特。
伊恩
https://stackoverflow.com/questions/61930764
复制相似问题