我有点困惑。我运行了以下设置。我正在使用kAudioSessionCategory_PlayAndRecord类别,iPod在后台播放一些音乐。
如果我想播放一些具有以下类别覆盖的应用音乐,iPod音乐将很快通过[[AVAudioSession sharedInstance] setActive:YES ...]调用停止,但似乎闪避和混音有效。一旦我的app声音停止,同样会发生相应的...:setActive:NO]调用。如果我将使用MediaPlayback类别,app声音和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];
答案 0 :(得分:1)
我发现在kAudioSessionProperty_OtherMixableAudioShouldDuck
会话中设置kAudioSessionProperty_OverrideCategoryMixWithOthers
和 kAudioSessionCategory_PlayAndRecord
会发生意外情况(即混合覆盖失败)。你的应用真的不得不放弃其他音频吗?当我从我的应用程序中删除该部分时,一切都按预期工作。