带有路由变化的 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 播放器正在播放时,状态菜单中的“播放”图标不显示

初始化 AVAudioSession 时保持蓝牙声音

03收银中遇到电脑小图标带红色小叉的处理

vue页面内监听路由变化

当我的应用程序不在后台时(IP 语音)脉冲红色状态栏

为啥我的应用在不录制时会显示正在录制(闪烁的红色)状态栏?