录制时如何静音背景音频(使用音频队列服务)

时间:2011-01-28 22:02:07

标签: iphone audio audioqueueservices

我有一个应用程序,它使用音频队列来记录语音用户输入。 这仅在短时间内发生,并且仅在用户按下按钮时才会发生。

我希望允许用户的背景音乐继续播放,除非在录音实际发生时将其静音或以低得多的音量播放(以避免录制从扬声器播放的音频)。

对于我的录制队列,我正在使用PlayAndRecord类别,并且我将OverrideCategoryMixWithOthers属性设置为true。

1 个答案:

答案 0 :(得分:3)

当他们添加AudioSessionSetActiveWithFlags API和kAudioSessionSetActiveFlag_NotifyOthersOnDeactivation标志时,iOS4 +中的问题变得不那么严重了。

要在录制时暂停背景音乐,您需要调用AudioSessionSetActive(false),这将取消激活您的音频会话,然后将类别切换到PlayAndRecord模式,并将OverrideCategoryMixWithOthers属性设置为false。

现在,使用这些设置重新激活与AudioSessionSetActive(true)的会话,iPod / Pandora / etc的音频会话将被中断,并且会淡出并暂停。

然后,录制完成后,使用

重新停用会话

AudioSessionSetActiveWithFlags(false,kAudioSessionSetActiveFlag_NotifyOthersOnDeactivation);

这将通知背景音乐应用程序他们的会话不再中断,他们可以开始播放音乐。

最后,您可以使用MediaPlayback(或等效)模式再次设置音频会话,并再次将OverrideCategoryMixWithOthers属性设置为true。