问题已经解决了!
我已经重写了录制代码以避免这个问题。我使用了 AudioQueues,基本上后端代码与 SpeakHere 应用程序相同,只是做了一些小改动。在其中提供了另外两个 api:
-(void)resume
{
AudioQueueStart(queueObject, NULL);
}
-(void)pause
{
AudioQueuePause(queueObject);
}
在 AudioRecorder 类中。基本目的是避免在记录方法中完成的记录设置。
设置中断回调,然后在回调中适当地使用此暂停和恢复方法。还要注意根据您的应用程序是否需要设置活动音频会话。
希望这可以帮助那里的人。
编辑:
音频中断监听回调:
void interruptionListenerCallback (void *inUserData, UInt32 interruptionState)
{
if (interruptionState == kAudioSessionBeginInterruption)
{
[self.audioRecorder pause];
}
else if (interruptionState == kAudioSessionEndInterruption)
{
// if the interruption was removed, and the app had been recording, resume recording
[self.audioRecorder resume];
}
}
监听音频中断:
AudioSessionInitialize(NULL, NULL, interruptionListenerCallback, self);