AVAudioRecorder Will non Record Sul dispositivo
-
28-09-2019 - |
Domanda
Questo è il mio metodo:
-(void) playOrRecord:(UIButton *)sender {
if (playBool == YES) {
NSError *error = nil;
NSString *filePath = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat: @"%d", [sender tag]] ofType:@"caf"];
NSURL *fileUrl = [NSURL fileURLWithPath:filePath];
AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:fileUrl error:&error];
[player setNumberOfLoops:0];
[player play];
}
else if (playBool == NO) {
if ([recorder isRecording]) {
[recorder stop];
[nowRecording setImage:[UIImage imageNamed:@"NormalNormal.png"] forState:UIControlStateNormal];
[nowRecording setImage:[UIImage imageNamed:@"NormalSelected.png"] forState:UIControlStateSelected];
}
if (nowRecording == sender) {
nowRecording = nil;
return;
}
nowRecording = sender;
NSError *error = nil;
NSString *filePath = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat: @"%d", [sender tag]] ofType:@"caf"];
NSURL *fileUrl = [NSURL fileURLWithPath:filePath];
[sender setImage:[UIImage imageNamed:@"RecordingNormal.png"] forState:UIControlStateNormal];
[sender setImage:[UIImage imageNamed:@"RecordingSelected.png"] forState:UIControlStateSelected];
recorder = [[AVAudioRecorder alloc] initWithURL:fileUrl settings:recordSettings error:&error];
[recorder record];
}
}
La maggior parte di esso è autoesplicativo; playBool è un BOOL che è SI quando è in modalità di riproduzione. Tutto funziona nel simulatore tuttavia, quando l'eseguo su un dispositivo, [record registratore] non ha prodotto alcun. Qualcuno ha un indizio sul perché questo sta accadendo?
Soluzione 3
Ok, risolto la mia domanda; Non so perché, ma devo record al NSTemporaryDirectory quando su un dispositivo. La modifica che completamente riparato.
Altri suggerimenti
Se qualsiasi punto del codice si ha questa configurazione:
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
modificarla in:
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];
Impostazione della categoria AVAudioSession sbagliata causerà registrazione / riproduzione al sicuro.
Questo perché non è possibile modificare l'applicazione fascio sul dispositivo (è firmato). È possibile registrare sia la cartella Documenti per la vostra applicazione, o la directory tmp.
ho avuto lo stesso identico problema. Si scopre che stavo urtando contro un'istruzione di percorso in modo non corretto generato. L'AVAudioRecorder inizializzato fine - e senza incidenti - ma iOS semplicemente non mi permetteva di scrivere. Perché? Check it out:
/* The following code will fail - why? It fails because it is trying to write some path that is NOT accessible by
this app.
NSString *recordedAudioPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)
objectAtIndex:0]
stringByAppendingString:@"recorded.caf"];
*/
// Correction:
NSString *recordedAudioPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)
objectAtIndex:0];
recordedAudioPath = [recordedAudioPath stringByAppendingPathComponent:@"recorded.caf"];
NSURL *recordURL = [NSURL fileURLWithPath:recordedAudioPath];
Questo senso completo ora. Grazie per avermi sterzata nella direzione giusta.
Inoltre, assicurarsi che la vostra applicazione è consentito l'accesso al microfono (vale a dire nelle impostazioni di iOS, scorrere verso il basso e trovare la vostra applicazione, e dovrebbe avere 'microfono', che è necessario passare a 'on')