我正在使用Audioplayer
播放5-10秒的音频文件。我的应用程序允许其他应用的背景音乐。在播放我的音频时,我正在停用其他音乐
[[AVAudioSession sharedInstance] setActive:YES withOptions:AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation error:nil];
完成音频后,我想播放已停用的音乐。
这有可能在AVAudioPlayer
和AVAudioSession
?或者哪个框架支持这种恢复功能?
播放声音后,停用AVAudioSession
[[AVAudioSession sharedInstance] setActive:NO withOptions:AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation error:nil];
您可以为所有音频通话创建课程。
或者如果您知道正在播放的内容,您可以将它们保存在一个阵列中并播放它们。
该框架不允许您执行您想要的操作。
我建议为任何音频调用制作自己的包装类。
我做了一些搜索,找到了this post。
从链接的答案:
[[AVAudioSession sharedInstance] setActive:NO withFlags:AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation error:&error];
每当您在应用程序中不需要音频会话时(即,当您没有输出任何声音时),您应该停用它。在有意义的地方,您应该使用此方法,以便通知任何背景音频并可以恢复(接收此通知的应用程序不一定必须恢复)。
我还没有确认它是否有效,但它是尝试的东西,我希望它有所帮助。
@gabuh的回答,翻译成Swift:
try? AVAudioSession.sharedInstance().setActive(false, options: .notifyOthersOnDeactivation)