Я использую AVAudioSession
и AVAudioRecorder
для записи звука в моем приложении. К сожалению, мое приложение зависает, когда я звоню во время записи. Я попытался реализовать методы делегирования AVAudioRecorder
для прерываний, но они не вызываются. У меня есть контроллер представления, с которым пользователь взаимодействует, чтобы инициировать и останавливать процесс записи и отдельный контроллер рекордера, который содержит AVAudioRecorder
.Методы делегирования прерываний AVAudioRecorder не получаются вызванные
Я следующее реализован в моем самописца контроллера:
@interface OSRecordPlayController : NSObject <AVAudioRecorderDelegate, AVAudioPlayerDelegate, AVAudioSessionDelegate>
-(void) audioRecorderBeginInterruption:(AVAudioRecorder *)recorder
{
if(recorder.recording)
{
[recorder stop];
[self stopRecording];
[self moveViewsDown];
interruptedDuringRecording = YES;
}
}
-(void)audioRecorderEndInterruption:(AVAudioRecorder *)recorder withOptions:(NSUInteger)flags
{
if(interruptedDuringRecording)
{
[recorder prepareToRecord];
[recorder record];
interruptedDuringRecording = NO;
}
}
-(void)setUpAudioFile
{
self.recorder = [[AVAudioRecorder alloc] initWithURL:self.audioFileURL settings:audioSettings error:nil];
self.recorder.delegate = self;
self.recorder.meteringEnabled = YES;
[self.recorder prepareToRecord];
}
Почему не эти дозвонились? Я установил точку останова для обоих, но я не ударил ни одного из них. Я довольно часто видел этот вопрос без твердых ответов, все старые ответы для AVAudioSession
делегируют методы прерывания, но они устарели.
возможно дубликат [AVAudioPlayer и AVAudioRecorder: делегированными методы не Called] (http://stackoverflow.com/ вопросы/6579257/avaudioplayer-and-avaudiorecorder-delegate-methods-not-called) –