2

我有点困惑。我正在运行以下设置。我正在使用 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];
4

1 回答 1

1

我发现设置kAudioSessionProperty_OtherMixableAudioShouldDuck kAudioSessionProperty_OverrideCategoryMixWithOthers会话会导致意想不到的kAudioSessionCategory_PlayAndRecord事情发生(即混合覆盖失败)。您的应用程序真的必须避开其他音频吗?当我从我的应用程序中删除该部分时,一切都按我的预期工作。

于 2013-02-05T22:06:15.030 回答