1

我正在使用 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后调用第二个方法

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

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

如何以编程方式处理这个?

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

4

1 回答 1

0

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

当我的音频会话在后台运行时未正确处理音频中断时,我遇到了类似的问题,这导致音频会话调用以不可预知的方式失败。所以确保你处理这些。

于 2011-08-12T19:04:54.817 回答