带有路由变化的 AVAudioSession 红色状态栏
Posted
技术标签:
【中文标题】带有路由变化的 AVAudioSession 红色状态栏【英文标题】:AVAudioSession red status bar with route change 【发布时间】:2016-06-29 04:28:12 【问题描述】:当我的应用程序被发送到后台时,红色状态栏会短暂闪烁。我可以忍受这一点。问题是,如果用户随后更改路线(例如,插入或拔出耳机),红色状态栏会亮起并保持亮起(直到应用程序被终止或前台)。
我的应用使用音频会话类别AVAudiosessionCategoryPlayAndRecord
,但在后台运行时不使用。我将类别更改为播放,然后在应用程序进入后台时停用音频会话,但无法抑制红色闪烁,也无法抑制路由更改的更大问题。
【问题讨论】:
【参考方案1】:看起来更改类别还不够——如果会话是使用 inputEnabled true 创建的,那么您就会遇到状态警告。您必须完全释放会话。 See this question 与最终答案讨论“......唯一的方法是实际释放audioController
。”
【讨论】:
我看到了那个答案,但它基于惊人的音频引擎,我没有看到如何在此处应用它。 AVAudioSession 是一个单例,afaik 释放它没有意义。 看看AEAudioController.m,看看它在dealloc
中的作用是否适用于你自己的代码。
好主意,但我没有发现任何有用的东西。这完全是对其自身数据结构的拆解。
您已关闭所有后台处理?您没有保留 AUGraph 或任何其他系统数据结构?
我没有做任何低级的事情,只是使用 AVFoundation 进行播放和麦克风输入。但是,你确实给了我一个很好的引导……我需要查看我正在使用的 OpenEars 语音识别器,看看是否是导致问题的原因……我专注于音频会话,没有想到这一点。跨度>
以上是关于带有路由变化的 AVAudioSession 红色状态栏的主要内容,如果未能解决你的问题,请参考以下文章
带有 AVPlayer 的 AVAudioSession:当 AVPlayer 播放器正在播放时,状态菜单中的“播放”图标不显示