首页 文章

如果类别kAudioSessionCategory_PlayAndRecord处于活动状态,AudioSessionSetActive(true)会立即停止iPod播放器

提问于
浏览
1

我有点困惑 . 我运行了以下设置 . 我正在使用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 回答

  • 1

    我发现在 kAudioSessionCategory_PlayAndRecord 会话中设置 kAudioSessionProperty_OtherMixableAudioShouldDuck and kAudioSessionProperty_OverrideCategoryMixWithOthers 会发生意外情况(即混合覆盖失败) . 你的应用真的不得不放弃其他音频吗?当我从我的应用程序中删除该部分时,一切都按预期工作 .

相关问题