我有点困惑。我正在运行以下设置。我正在使用 kAudioSessionCategory_PlayAndRecord 类别,iPod 在后台播放一些音乐。
如果我想播放一些具有以下类别覆盖的应用音乐,iPod 音乐将通过 [[AVAudioSession sharedInstance] setActive:YES...] 调用很快停止,但似乎闪避和混合工作。一旦我的应用程序声音停止,同样的情况也会发生,再次使用相应的 ...:setActive:NO] 调用。如果我将使用 MediaPlayback 类别,则应用程序声音和 iPod 声音之间的“混合”可以正常工作而不会出现任何中断。类别切换对我来说不是一个选项(我还需要蓝牙覆盖),因此我期待有人可以帮助我解决这个问题。
- (IBAction) playAppSound: (id) sender {
NSError *activationError = nil;
[[AVAudioSession sharedInstance] setActive: NO error: &activationError];
// set internal speakers as default...
UInt32 useDefaultSpeakers = 1;
AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryDefaultToSpeaker,
sizeof(useDefaultSpeakers),
&useDefaultSpeakers);
// always try to enable ducking
UInt32 shouldDuck = 1;
AudioSessionSetProperty( kAudioSessionProperty_OtherMixableAudioShouldDuck,
sizeof(UInt32),
&shouldDuck );
UInt32 doSetProperty = 1;
AudioSessionSetProperty (
kAudioSessionProperty_OverrideCategoryMixWithOthers,
sizeof (doSetProperty),
&doSetProperty
);
// Activates the audio session.
[[AVAudioSession sharedInstance] setActive: YES error: &activationError];
[appSoundPlayer play];