iOS AVAudioSession 在background中断问题

z8323665 2015-09-14 07:46:55
程序实现了一个实时讲解的功能。

使用的category 是: [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:&error];
使用的是音频播放方式是:openAL

1.现在如果程序在前台运行, 也就是播放讲解。此时来了个电话或者闹铃, 会触发AVAudioSessionInterruptionNotification通知,根据参数来pause和resume, 在电话结束后或闹铃结束后,将继续播放我原来的讲解, 这个是没问题的。

2.如果程序后退到台运行了,也就是后台进行讲解。 此时来了个电话或者闹铃,也回触发AVAudioSessionInterruptionNotification通知, pause没问题, 但是在resume中[[AVAudioSession sharedInstance] setActive:YES error:&error];中是失败的,错误码是AVAudioSessionErrorCodeCannotInterruptOthers = '!int', /* 0x21696E74, 560557684 */这个。

所以2问题导致我无法在打完电话后自动地继续播放讲解

我怀疑退到后台了, 再也拿不到权限了。但是其他软件就可以实现。比如用UC浏览器听一首歌曲, 然后切换到QQ播放一段语音, 语音播完后,还会继续播放歌曲

此问题困扰我好几天, 烦请各位大大帮忙解决一下,万分感谢!
...全文
7505 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
by1900 2016-07-05
  • 打赏
  • 举报
回复
有一个笨方法,添加定时器,例如每秒计数1次,直到重新唤醒Audio服务。
Hi_Aaron 2016-07-04
  • 打赏
  • 举报
回复
// background audio *must* mix with other sessions (or setActive will fail) NSError *sessionError = nil; [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback withOptions:AVAudioSessionCategoryOptionMixWithOthers | AVAudioSessionCategoryOptionDuckOthers error:&sessionError]; if (sessionError) { NSLog(@"ERROR: setCategory %@", [sessionError localizedDescription]); }
qq_29342355 2016-04-11
  • 打赏
  • 举报
回复
楼主你好,我也遇到了同样的问题,请问您是怎么解决的,求助!谢谢!我的QQ960551971
z8323665 2015-09-15
  • 打赏
  • 举报
回复
后台已经实现了语音播放, 但是现在锁屏的时候来了个电话,电话完了, 无法继续播放了
iosask 2015-09-14
  • 打赏
  • 举报
回复
需要设置开启后台语音模式: 详细参考:http://www.iosask.com/?q-8.html

29,048

社区成员

发帖
与我相关
我的任务
社区描述
主要讨论与iOS相关的软件和技术
社区管理员
  • iOS
  • 大熊猫侯佩
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧