Проблема решена!
Я переписал код записи, чтобы избежать этой проблемы. Я использовал 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);
person
Raj Pawan Gumdal
schedule
16.02.2010