8

Apple 的演示项目 aurioTouch2 演示了我在录制模式下处理音频中断时遇到的相同 iOS-6 问题。

场景非常具体。在录音模式下,拨打电话,然后接听(拒绝通话不会导致错误)。然后,挂断后,应用程序恢复焦点,无法继续录制。

错误消息是:AUIOClient_StartIO failed (2003329396) 此错误代码有助于翻译成单词“what”。

aurioTouch2 项目是 iOS-5 的更新,但不适用于 iOS-6。对我的应用程序来说似乎是一个相当严重的错误,因为该设备是“电话”。

我已经尝试了所有明智的变化,但没有运气。有人遇到同样的问题吗?非常感谢。

编辑:这是为我修复它的代码。该修复程序在评论中注明。不完全优雅,但我会在这一点上采取任何措施。

此方法在应用程序返回到活动状态的某个时间点被调用。我让中断结束触发器设置了一个标志,然后当事情再次活跃时,我检查这个标志,然后在这里调用这个方法。

-(void) handleEndInterruption {
    // Reset audio session
    UInt32 category = kAudioSessionCategory_PlayAndRecord;
    AudioSessionSetProperty ( kAudioSessionProperty_AudioCategory, sizeof (category), &category );

    // Reactivate the current audio session
    AudioSessionSetActive(YES);

    // Do this, and fail with: AUIOClient_StartIO failed (2003329396)
    [self createAUProcessingGraph];
    [self initializeAndStartProcessingGraph];

    // Do it a second time and it works
    AudioSessionSetActive(NO);
    AudioSessionSetActive(YES);
    [self createAUProcessingGraph];
    [self initializeAndStartProcessingGraph];

    // Restore open al context
    alcMakeContextCurrent([AudioDispatcher sharedInstance].audioContext);

    // 'unpause' my context
    alcProcessContext([AudioDispatcher sharedInstance].audioContext);
}
4

1 回答 1

0

我遇到了同样的问题并找到了解决方案。

使用核心电话框架来检测来电,我通过关闭文件“不优雅地”停止录音,而不接触音频队列。然后,当应用程序恢复时,我将录制显示为暂停状态,然后用户可以恢复录制。与此同时,我重新启动了所有核心音频队列。

如果您使用 ARC ,请注意callEventHandlerof 。CTCallCenter它未正确释放,因此请记住将其设置为nil.

于 2012-11-27T10:59:44.397 回答