我正在使用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
我遇到的问题是,有些时候音乐在警报完成后不会消失。通过一些调试,我发现音频会话属性是 正确设置,但由于某种原因被忽略。
我在测试时也注意到,当音乐没有消失时,如果我只是暂停并在设备上手动播放音乐,它就会变得正常。
如何以编程方式处理此问题?
编辑:
当应用程序在后台运行时,问题就出现了
答案 0 :(得分:0)
您不需要在unDuckMusic中设置属性,停用会话应足以让混合音频恢复正常音量。
当我的音频会话在后台运行时没有正确处理音频中断时,我遇到了类似的问题,导致音频会话调用以不可预测的方式失败。所以一定要处理好这些。