对于很多应用程序@GregC的建议,在开始时设置ducking,然后在播放音频之前激活音频会话并在工作正常后停用。
但是,如果您希望应用程序在不再处于前景时继续提供音频反馈,则这不起作用,因为在进入后台以使操作系统识别出您需要之前需要进行活动音频会话继续播放音频。
所以在那些你需要设置播放(如Playing music when application is in background with kAudioSessionCategory_SoloAmbientSound讨论的环境是不是在后台支持)的acive音频会议,并能够与其他来源的混合情况:你玩之前
AudioSessionInitialize (NULL,NULL,NULL,NULL);
UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty (kAudioSessionProperty_AudioCategory,sizeof (sessionCategory),&sessionCategory);
UInt32 doSetProperty = 1;
AudioSessionSetProperty (kAudioSessionProperty_OverrideCategoryMixWithOthers,sizeof (doSetProperty),&doSetProperty);
AudioSessionSetActive(true);
然后音频您需要激活回避:
AudioSessionSetActive(false);
UInt32 duck = true;
AudioSessionSetProperty(kAudioSessionProperty_OtherMixableAudioShouldDuck, sizeof(duck), &duck);
AudioSessionSetActive(true);
和播放音频后,你需要重新设置混合其它来源的标志:
AudioSessionSetActive(false);
UInt32 doSetProperty = 1;
AudioSessionSetProperty (kAudioSessionProperty_OverrideCategoryMixWithOthers,sizeof (doSetProperty),&doSetProperty);
AudioSessionSetActive(true);
我发现的是,如果您尝试在播放音频时将ducking标志设置为false,则会停止并正在播放音频 - 但将MixWithOthers标志设置为反而似乎不会停止播放。
可能看这里:http://stackoverflow.com/questions/2579152/using-kaudiosessionproperty-othermixableaudioshouldduck-on-iphone – iwasrobbed 2010-07-27 21:35:36