2016-06-30 13 views
0

Ich habe AVAudioRecorder zum Aufzeichnen von Audio verwendet. Ich habe AVAudioSessionInterruptionNotification zu meinem Viewcontroller hinzugefügt, um die Aufzeichnung während der Unterbrechung anzuhalten.AVAudioRecorder startet nicht nach AVAudioSessionInterruptionNotification

- (void)viewDidLoad 
    {  
    [super viewDidLoad]; 
    // Other Stuffs 
     [[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(interrupted:) 
              name:AVAudioSessionInterruptionNotification 
              object:nil]; 
} 



-(void)interrupted:(NSNotification *) sender 
    { 
     if(recorder.isRecording) 
      { 
      // Code To Update UI 
      [recorder pause]; 
      } 
    }  

Frage 1: Während der Unterbrechung interruped Methode zweimal aufgerufen wird. Warum?. Während des ersten Anrufs ist der Recorder Null. Und während des zweiten Anrufs recoder.isRecording ist NEIN. Warum ?

Frage 2: Wenn die Anwendung nach dem Empfang einer Unterbrechung aktiv wird, nimmt [recorder record] die Aufnahme in die Datei nicht wieder auf. Es fängt aber an, es als neue Audiodatei aufzunehmen. Wie löst man das?

Antwort

0

Unterbrochene Anrufe 2 mal verursachen es Sie über Unterbrechung und über Ende zu benachrichtigen. Look-Benachrichtigung userInfo (Ihr Absender ist Benachrichtigungsobjekt), enthält es Objekt für Schlüssel AVAudioSessionInterruptionTypeKey, der einen der Werte enthält: AVAudioSessionInterruptionTypeBegan oder AVAudioSessionInterruptionTypeEnded. Sie können es analysieren und festlegen, wann und wann es fortgesetzt wird. Aber erinnern Sie sich, zweiter Anruf ist nicht notwendig, hat es in der Dokumentation geschrieen, und es ist wahr, ich habe nachgeprüft. Das System kann festlegen, wann Sie Ihre Arbeit fortsetzen können und wann Sie sie nicht benötigen.

Über Rekorder gibt es zu wenig Info.

+0

Was ist mit meiner Frage 2 '[recorder record]' nimmt die Aufnahme nicht wieder auf, sondern beginnt sie als neue Datei aufzunehmen. –

+0

Ich kann dir nicht mehr Informationen geben, weil ich nicht mit Recorder zu nah gearbeitet habe + zu niedrig Info hier ist. Ich schlage vor, dass es ein Problem in Ihrem Code sein kann. Vielleicht verlierst du die Plattenposition oder erstellst den Recorder irgendwo neu. Versuchen Sie, alle Methoden zu debuggen. Vielleicht werden Sie etwas interessantes finden, was auf Ihre Frage antworten wird. – Hamster8

+0

Ich habe bereits 'recorder' -Instanz überprüft, ist die gleiche während der Aufnahme' i.e. vor dem Hintergrund und nach dem Auftauchen in den Vordergrund. –