当我试图关闭环境音乐(例如音乐播放器或Spotify)以获得音效时,我看到显示屏有延迟 . 我正在使用AudioServicesPlaySystemSound来播放效果 . 我使用以下内容启动会话并在后台播放音乐 .
[audioSession setCategory:AVAudioSessionCategoryAmbient error:nil];
然后我将类别设置为播放以停止音乐为我的效果让路
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
并使用以下内容重新启动音乐
[[AVAudioSession sharedInstance] setActive:NO withOptions:AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation error:nil];
这感觉非常愚蠢,并且setCategory:AVAudioSessionCategoryPlayback在卷消失时在显示器中产生延迟 .
将背景音乐静音的正确方法是什么?
谢谢,史蒂夫
1 回答
首先,我不确定为什么要将类别设置为
AVAudioSessionCategoryPlayback
. 除非您真的需要在关闭静音开关/手机锁定时继续播放音效,否则您应该选择AVAudioSessionCategorySoloAmbient
,这也会使背景音静音 . 完成播放音效后,您可以切换回氛围 .如果播放真的是你需要的(因为你有一个闹钟或其他东西),你可能会考虑立即切换到播放类别,然后设置
kAudioSessionProperty_OverrideCategoryMixWithOthers
属性,使背景声仍然播放,然后如果你想要它关闭一个静音,但你应该首先确保确实需要播放类别 .或者,您是否考虑过躲避背景音而不是静音?也许你可以留在ambiant类别,只需在播放效果时设置
kAudioSessionProperty_OtherMixableAudioShouldDuck
音频会话属性(然后重置它) . 这意味着当您执行效果时,背景声音的音量会减小,这可能会更合适,具体取决于您的应用正在执行的操作 .最后但并非最不重要的是,我从未使用
AudioServicesPlaySystemSound
,它可能无法用于混音或闪避,因此您可能需要切换到AVAudioPlayer
.