2014-08-29 1 views
2

Просто интересно, если кто-нибудь еще встретил это. Методы AVAudioRecorderDelegate, связанные с прерываниями телефона, не вызываются. Однако я знаю, что делегат установлен правильно, потому что вызывается метод audioRecorderDidFinishRecording. Я знаю, что я, вероятно, сделал что-то, чтобы вызвать этот глюк, потому что, когда я пару дней назад общался с ним, на самом деле вызывали методы прерывания.audioRecorderBeginInterruption не называется

Как бы то ни было, кто-нибудь знает, почему эти методы не будут вызываться, если делегат установлен правильно?

ПРИМЕЧАНИЕ: проблема такая же, независимо от того, использую ли я AVAudioRecordedDelegate или добавляю наблюдателя для AVAudioSessionInterruptionNotification.

Спасибо!

ответ

0

Хорошо, поэтому я нашел решение своей проблемы. Проблема в том, что у меня есть AVCaptureSession в другом месте приложения. В подобных случаях важно, чтобы экземпляр сеанса захвата знал, что он не должен использовать аудиосессию приложения. Это делается просто так:

self.captureSession.usesApplicationAudioSession = NO; 

Теперь ваша AVAudioRecorderDelegate будет обрабатывать прерывания (или, если вы решите использовать уведомление, они будут работать, а).

+0

как объявить self.captureSession (какой объект класса)? – sohil

+0

Это зависит от реализации. У меня есть собственная оболочка для AVCaptureSession. – joelg

+0

Я использую AVAudioRecorder, что я могу сделать? если вы знаете, пожалуйста, скажите мне. – sohil

0

Использовать оповещения. Вот пример Swift.

NSNotificationCenter.defaultCenter().addObserver(self, 
     selector:"sessionInterrupted:", 
     name:AVAudioSessionInterruptionNotification, 
     object:myRecorder) 
+1

Я ценю предложение, но проблема точно такая же, независимо от того, применяю ли я подход делегата или подход к уведомлению. Я отредактирую свой вопрос, чтобы отразить это. – joelg

+0

Рад, что вы нашли проблему. FWIW, делегат устарел в пользу уведомления cha cha. –

+0

Конечно, но где это упоминается в документах? Есть несколько методов прерывания конца, которые явно устарели, но это не так. – joelg