如何在iOS中恢复音频播放?

10

我正在使用Audioplayer播放一个5-10秒的音频文件。我的应用程序允许其他应用程序的背景音乐。在播放我的音频时,我会停用其他音乐。

 [[AVAudioSession sharedInstance] setActive:YES withOptions:AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation error:nil];
完成我的音频后,我想播放已停用的音乐。在AVAudioPlayer和AVAudioSession中是否可能实现这一点?否则,哪个框架支持此恢复功能?

1
我也需要这个答案!!! - Vara
请尝试此链接:https://dev59.com/31jUa4cB1Zd3GeqPSYgF - Pradeep Singh
谢谢,但是在恢复后无法播放。 - user40910
4个回答

6
播放音频后,请停用您的AVAudioSession。
[[AVAudioSession sharedInstance] setActive:NO withOptions:AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation error:nil];

它将停止其他音乐播放器,但在此之后不会开始播放。 - user40910
1
这是正确的答案。然而,你无法控制其他正在播放背景音乐的应用程序是否正确处理通知以便可以恢复播放,也无法保证它们是否已经获得了正确的权限,因此不能保证它会起作用。 - Dave Durbin

0

@gabuh的答案,翻译成Swift:

try? AVAudioSession.sharedInstance().setActive(false, options: .notifyOthersOnDeactivation)

0

我进行了一些搜索,找到了this post

从链接的答案中:

[[AVAudioSession sharedInstance] setActive:NO withFlags:AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation error:&error]; 每当您的应用程序不需要音频会话(即当您不输出任何声音时),您都应该将其停用。在有意义的地方,您应该使用此方法,以便通知任何后台音频并可能恢复(接收此通知的应用程序不一定要恢复)。

我还没有确认它是否有效,但这是值得尝试的,希望能有所帮助。


-1
你可以为所有音频调用创建一个类。
或者,如果你知道正在播放什么,你可以将它们保存在数组中并回放出来。
框架不允许你做你想做的事情。
我建议为任何音频调用创建自己的包装器类。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接