在 iphone4 中打电话后 AudioQueueStart 失败
Posted
技术标签:
【中文标题】在 iphone4 中打电话后 AudioQueueStart 失败【英文标题】:AudioQueueStart fails after a phone call in iphone4 【发布时间】:2012-10-13 15:06:43 【问题描述】:我正在尝试从 ios6 和 iphone4 中使用 AudioQueue 的应用程序进行录制,我发现当我用手机完成的最后一件事是通话时,AudioQueueStart 失败并显示 (2003329396),并且不能开始输入队列了。
没有之前的电话,AudioQueueStart 运行良好,多次。
以这种方式发生:
I do a phone call.
Start my app.
Creating unique audio session...
Creating session property listener...
Activating session...
Setting audio category... (Record)
Property listener received... 1919902568 kAudioSessionProperty_AudioRouteChange
Reason is: kAudioSessionRouteChangeReason_CategoryChange
Inputs avaliable (here Im looking in route dictionary information, if i have inputs information in new route )
Creating new Queue Input...
Allocate/Enqueue queue buffers...
Start Record Queue...
OSStatus ERROR (2003329396)
这似乎不影响 iphone4s。
在这种情况下,是否有任何正常的方法可以恢复将 AudioQueueStart 用于输入队列的能力?
谢谢,对不起我的格式...
【问题讨论】:
音频类别有问题,我将类别设置为录制,获取类别,然后设置为录制。但是当启动输入队列失败(在上面的条件下)。当它失败时,如果我将类别设置为播放,然后返回记录,输入队列会重新开始。很高兴找到这个!但很奇怪……不是吗? 一个丑陋的重试对我有用,没有重新创建队列,如果输入队列的 AudioQueueStart 失败,我将类别设置为播放,然后再次录制,然后调用 AudioQueueStart 现在工作...... :) 令人惊讶的是,这个 hack 有效!感谢分享。 【参考方案1】:您需要处理音频中断 阅读以下文档
http://developer.apple.com/library/ios/#documentation/Audio/Conceptual/AudioSessionProgrammingGuide/HandlingAudioInterruptions/HandlingAudioInterruptions.html
【讨论】:
我已经在处理中断,但在这种情况下,我认为在应用程序开始之前调用开始和结束,不涉及中断。会话处于活动状态。抱歉,我没有在跟踪中提到中断回调注册和会话测试。但是谢谢你,我没有找到我认为的那个特定文件。如果我能更好地处理这个问题,我会阅读。但似乎 AudioQueue 服务的状态不一致,苹果的中断示例也失败了,可能是旧的。至少似乎返回具有类别冗余变化的服务。也许我错过了什么,我会读这个谢谢!【参考方案2】:这里有类似的问题。
我最终在识别为 iPhone 4 的设备上忽略了这个特定的错误代码。 尽管出现错误代码,但我的队列正常启动。
【讨论】:
以上是关于在 iphone4 中打电话后 AudioQueueStart 失败的主要内容,如果未能解决你的问题,请参考以下文章