2016-02-01 15 views
6

Ich habe ein Problem mit AVAudioPlayer in Einige Bedingung. im ersten mein Audiorecorder funktioniert Feine im Allgemeinen. aber nach VOIP Anruf und Wiedergabe klingeln von built_in_Speaker und arbeiten viele mit Audio-Session, nach dem Auflegen des Anrufs, kann ich nicht Audio mit Ton zuerst aufnehmen! aber im zweiten Mal funktioniert alles gut. ProblemAVAudioRecorder hat keinen Ton

in der Bedingung, dass ich erwähnt habe, war mein Audio-Datensatz, hat aber keine Stimme!

ich will wissen in welcher situation vielleicht passiert?

self.audioSession = [AVAudioSession sharedInstance]; 
NSError *err = nil; 
[self.audioSession setCategory :AVAudioSessionCategoryPlayAndRecord error:&err]; 
if(err){ 
    NSLog(@"audioSession: %@ %d %@", [err domain], [err code], [[err userInfo] description]); 
    return; 
} 

BOOL preparedToRecord = [self.audioRecorder prepareToRecord]; 
__block BOOL recordStarted = NO; 

err = nil; 
[self.audioSession setActive:YES error:&err]; 
if(err){ 
    NSLog(@"audioSession: %@ %d %@", [err domain], [err code], [[err userInfo] description]); 
    return; 
} 

if (preparedToRecord){ 
    recordStarted = [self.audioRecorder record]; 
} 

Antwort

4

Gelöst

ich den Grund für dieses Problem gefunden zu haben. Ich habe addObserve mein selbst, um die Benachrichtigung von AVAudioSession zu fangen, und überprüfen Sie die AudioSession Interrupt/RoutChanging! Das Problem ist nach meinem Anruf Ich habe versucht, Audio-Route zu Lautsprecher zu ändern, aber eine Klasse, die für AudioRoutChanging Benachrichtigung hinzufügenbeobachtet versuchen, das zu verhindern. Daher ändert sich die Audio-Session-Route jede Sekunde und konnte das Audio nicht aufnehmen.

Fazit Sie sollten für die Aufzeichnung der Audio wie folgt tun:

1) sicher Erlaubnis

2)[self.audioSession setActive:YES error:&err]; 

3)[self.audioSession setCategory :AVAudioSessionCategoryPlayAndRecord error:&err]; 

4) sicher über Ihre Route nicht ändern werden während Aufzeichnung.

4) sicher über Ihr Reiseziel Patch

-1

Audioaufnahme erfordert ausdrückliche Genehmigung des Benutzers. Wenn die Audiositzung Ihrer App zum ersten Mal versucht, eine Audioeingangsroute zu verwenden, während eine Kategorie verwendet wird, die die Aufzeichnung ermöglicht, fordert das System den Benutzer automatisch zur Genehmigung auf. Sie können explizit vorher fragen, indem Sie die Methode requestRecordPermission: aufrufen. Bis der Nutzer Ihrer App die Aufnahmeberechtigung erteilt, kann Ihre App nur Stille aufzeichnen.

siehe hier: https://developer.apple.com/library/prerelease/ios/documentation/AVFoundation/Reference/AVAudioSession_ClassReference/index.html

+0

ich die Erlaubnis, in der ersten Einführung von App bekommen haben, und ich habe ich in meinem Anruf verwenden Audio-Sitzung erwähnt und es funktioniert gut! ich repariere das problem, das ich hier bald erklärt habe. tnx für Ihre Antwort! – Mohamad