2011-01-28 104 views
2

我有一个使用音频序列做口头用户输入的记录的应用程序。 只有在用户按下按钮时才会发生短暂的持续时间。如何忽略背景音频录制时(使用音频队列服务)

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

对于我的记录队列,我使用的是PlayAndRecord类,和我有OverrideCategoryMixWithOthers属性设置为true。

回答

3

当他们添加AudioSessionSetActiveWithFlags API和kAudioSessionSetActiveFlag_NotifyOthersOnDeactivation标志时,此问题在iOS4 +中就变得不太常见了。

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

现在,激活您与AudioSessionSetActive(真)使用这些设置会话,为iPod /潘多拉的/ etc会被打断音频对话,并会淡出并暂停。

然后,当您的录音完成后,关闭再次使用

AudioSessionSetActiveWithFlags(假,kAudioSessionSetActiveFlag_NotifyOthersOnDeactivation)会话;

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

最后,您可以设置再次使用的MediaPlayback(或同等)模式,并重新设置OverrideCategoryMixWithOthers属性为true音频会议。