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