0

当我尝试关闭环境音乐(例如音乐播放器或 Spotify)以获得音效时,我看到显示屏出现延迟。我正在使用 AudioServicesPlaySystemSound 来播放效果本身。我使用以下命令开始会话并在后台播放音乐。

[audioSession setCategory:AVAudioSessionCategoryAmbient error:nil];    

然后我将类别设置为播放以停止音乐为我的效果让路

 [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];

并使用以下内容重新启动音乐

[[AVAudioSession sharedInstance] setActive:NO withOptions:AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation error:nil];

这感觉很愚蠢,并且 setCategory:AVAudioSessionCategoryPlayback 在音量消失时会在显示中产生延迟。

静音背景音乐的正确方法是什么?

谢谢,史蒂夫

4

1 回答 1

2

首先,我不确定您为什么将类别设置为AVAudioSessionCategoryPlayback. 除非您真的需要在静音关闭/手机锁定的情况下继续播放音效,否则您可能应该选择AVAudioSessionCategorySoloAmbient它,这也会使背景声音静音。播放完音效后,您可以切换回环境音。

如果您确实需要播放(因为您有闹钟或其他东西),您可能会考虑立即切换到播放类别,然后设置kAudioSessionProperty_OverrideCategoryMixWithOthers属性以使背景声音仍在播放,然后如果您希望静音则将其关闭但是您首先应该确保确实需要播放类别。

或者,您是否考虑过只是降低背景声音而不是静音?也许您可以留在环境类别,并在kAudioSessionProperty_OtherMixableAudioShouldDuck播放效果时设置音频会话属性(然后将其重置)。这意味着当您执行效果时,背景声音的音量会降低,这可能更可取,具体取决于您的应用程序正在做什么。

最后但同样重要的是,我从未使用过AudioServicesPlaySystemSound,它可能不适用于混音或闪避,因此您可能需要切换到AVAudioPlayer.

于 2012-10-23T12:54:42.357 回答