检查音频系统是不是正在使用

Posted

技术标签:

【中文标题】检查音频系统是不是正在使用【英文标题】:check if audio system is in use检查音频系统是否正在使用 【发布时间】:2012-03-22 21:02:51 【问题描述】:

有没有办法以编程方式检查音频系统是否专门用于 iPhone?如果应用程序在 FaceTime 或手机通话处于活动状态时尝试使用音频系统,则在尝试启动音频时会出错。我想在尝试启动音频之前检查音频系统是否被独占使用。

我正在开发的应用是 VOIP 类型的应用。当有来电时,我想在允许接听电话之前检查音频系统是否可用。我试过 CTCallCenter,它适用于手机通话,但 FaceTime 通话并没有显示在那里。

谢谢, 康威

【问题讨论】:

【参考方案1】:

您不能在检测到来电后立即初始化音频输入,并在用户接听电话后启动队列吗?

【讨论】:

这可以工作,但它意味着我们的音频代码的重新工作。现在,我只允许接听电话,如果音频初始化失败,我会挂断电话并显示错误消息。【参考方案2】:

查看音频会话文档中的中断处理委托。

https://developer.apple.com/Library/ios/documentation/Audio/Conceptual/AudioSessionProgrammingGuide/Introduction/Introduction.html

如果您在 beginInterruption 和 endInterruption 方法之间,您可以在您的应用中设置一个标志来阻止应答您的语音呼叫。

【讨论】:

beginInterruption 和 endInterruption 存在一些问题: 第一个问题:它们不是成对出现的,所以在某些时候我最后一次收到了 beginInterruption 但没有收到 endInterruption;然后我的应用程序认为它经常被中断。第二个问题:中断机制无法区分不可中断音频(手机和通话)和可中断音频(音乐播放器)。 很抱歉听到您仍有问题。如果您找到一个不错的解决方案,请发布它。我很想听听。 该链接不再有效,此答案已过时。 我更新了链接。 AVAudioSession 似乎没有被弃用,那么为什么这个已经过时了?如果有更好的方法,请考虑发布新答案。

以上是关于检查音频系统是不是正在使用的主要内容,如果未能解决你的问题,请参考以下文章

如何检查音频队列中的音乐是不是正在播放或暂停

HTML5 检查音频是不是正在播放?

检查系统音量是不是静音

Python:在语音识别中获取系统音频而不是麦克风

ios nstimer 在后台运行以检查警报时间是不是等于当前时间并播放音频

使用网络音频 api 检查所选麦克风是不是已静音