Wie kann ich die Aufnahme nach einer Unterbrechung im iPhone fortsetzen?

8

Ich arbeite an einer Audiorecorder-Anwendung, es funktioniert einwandfrei.

Aber ich stecke mit dem Problem der Unterbrechung fest. Wenn ein Anruf kommt,

%Vor%

Dann wird diese Methode aufgerufen und die Aufzeichnung angehalten.

Und wenn der Benutzer den Anruf ablehnt:

%Vor%

Dann möchte ich die Aufnahme von dem Punkt aus fortsetzen, an dem sie unterbrochen wurde. Aber wenn ich die Record-Methode erneut aufrufen, beginnt die Aufnahme mit einer neuen Datei.

    
Jitendra Singh 10.11.2009, 06:54
quelle

4 Antworten

6

Das Problem ist gelöst!

Ich habe den Aufzeichnungscode neu geschrieben, um dieses Problem zu vermeiden. Ich habe AudioQueues verwendet, im Grunde ist der Backend-Code der selbe der SpeakHere-Anwendung mit einigen kleineren Änderungen. Zwei weitere Apis drin:

%Vor%

In der AudioRecorder-Klasse. Der grundlegende Zweck ist es, die Aufnahme-Setup zu vermeiden, die in Record-Methode durchgeführt wird.

Richten Sie den Interrupt-Callback ein und verwenden Sie dann diese Pause und setzen Sie die Methoden im Callback entsprechend fort. Achten Sie auch darauf, die Audiositzung basierend darauf einzustellen, ob Ihre Anwendung dies benötigt oder nicht.

Hoffe, das hilft jemandem da draußen.

BEARBEITEN:

Audio-Interrupt-Listener-Rückruf:

%Vor%

Abhören für Audiounterbrechung:

%Vor%     
Raj Pawan Gumdal 16.02.2010 15:16
quelle
1

Das Betriebssystem stoppt den AVAudioRecorder wahrscheinlich während der Unterbrechung. Sie können dem Benutzer entweder die zwei oder mehr Dateien als einzelne Aufnahme präsentieren oder Sie können AudioQueue verwenden, um Ihren Code für die Behandlung von Unterbrechungen zu schreiben (und Audiodaten in eine Datei zu speichern).

    
lucius 30.12.2009 23:40
quelle
0

Ich habe das vor einer Weile versucht und kam zu dem Schluss, dass es nicht richtig gemacht werden konnte; Das Betriebssystem selbst lässt es nicht zu. Vielleicht hat sich das in 3.1.2 geändert, aber als ich es in 3.0 probiert habe, würde es einfach nicht funktionieren.

    
Jason B 01.01.2010 03:10
quelle
0

Um die Unterbrechung zu behandeln, müssen Sie AVAudioSessionDelegate-Methoden anstelle von AVAudioRecorderDelegate-Methoden verwenden. Dies ist das Codebeispiel für die Behandlung von Unterbrechungen:

%Vor%

Erste Methode automatisch die Audio-Sitzung deaktivieren.So, in der zweiten Methode, müssen Sie die Audio-Sitzung wieder aktivieren.Erste Methode wird die Aufzeichnung zu pausieren und wenn die Unterbrechung endet können Sie mit zweiten Methode fortsetzen.Ich habe dies in Version 3.0 und versucht obere Version.

    
Ashish Maheshwari 15.02.2010 11:40
quelle