kAudioSessionProperty_OtherMixableAudioShouldDuckDuck音乐有时不会丢弃

时间:2011-07-08 13:34:34

标签: iphone avplayer mpmusicplayercontroller

我正在使用MPMusicPlayerController通过iPodMusicPlayer播放设备中的音乐。并定期播放AVPlayer警报。代码就像这样

-(void) duckMusic
{
    UInt32 on=1;   
    AudioSessionSetProperty(kAudioSessionProperty_OtherMixableAudioShouldDuck,sizeof(on),&on);
    AudioSessionSetActive(true);
}

-(void) unDuckMusic
{
    UInt32 on=0;
    AudioSessionSetProperty(kAudioSessionProperty_OtherMixableAudioShouldDuck,sizeof(on),&on);
    AudioSessionSetActive(false);
}

我在播放提醒之前调用第一种方法,并在收到通知后调用第二种方法 AVPlayerItemDidPlayToEndTimeNotification

我遇到的问题是,有些时候音乐在警报完成后不会消失。通过一些调试,我发现音频会话属性是  正确设置,但由于某种原因被忽略。

我在测试时也注意到,当音乐没有消失时,如果我只是暂停并在设备上手动播放音乐,它就会变得正常。

如何以编程方式处理此问题?

编辑:
当应用程序在后台运行时,问题就出现了

1 个答案:

答案 0 :(得分:0)

您不需要在unDuckMusic中设置属性,停用会话应足以让混合音频恢复正常音量。

当我的音频会话在后台运行时没有正确处理音频中断时,我遇到了类似的问题,导致音频会话调用以不可预测的方式失败。所以一定要处理好这些。