我对AVAudioSession有疑问。我想在播放我的片段时混合运行音乐(例如来自spotify),但它也应该通过Ring / Silent开关静音。
在我的应用程序中,我播放了这样一个简短的音频片段:
//set my cateory first
AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryAmbient, with: [.duckOthers])
//... when audio will start playing
AVAudioSession.sharedInstance().setActive(true)
myPlayer.play()
//... when audio snipped has finished
AVAudioSession.sharedInstance().setActive(false)
当响铃/静音开关关闭时,此功能正常。音乐被躲避,我的音频剪辑被播放。音频结束后,音乐进入前台。
现在当Ring / Silent开关打开时,我的片段没有播放,但正在运行的音乐被躲避,这不是我想要的行为。
当开关打开时,是否有任何组合或解决方案可以使音频静音,当我的当前会话处于活动状态时,是否有其他音频消失?
我找到了关于检测静音开关的那些回购(Mute,SoundSwitch),但这看起来很脏。
答案 0 :(得分:0)
不幸的是,这是Apple想要的AVAudioSessionAmbient行为。您告诉iPhone应用程序中的所有音频都是不必要的,如果静音开关打开,则可以忽略。
尝试改用AVAudioSessionCategoryPlayback: https://developer.apple.com/documentation/avfoundation/avaudiosessioncategoryplayback?language=objc
它也可以与.duckOthers一起使用。我建议在您的应用程序委托didFinishLaunchingWithOptions中进行设置:
AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, with: [.duckOthers])