Sto scrivendo un'app iOS utilizzando un AudioQueue per la registrazione. Creo una coda di input configurata per ottenere PCM lineare, ho dichiarato questa coda e tutto funziona come previsto.Impossibile riavviare una coda di input audio interrotta in modalità background su iOS
Per gestire le interruzioni, ho implementato i metodi delegati di AVAudioSession per catturare l'inizio e la fine di un'interruzione. Il metodo endInterruption sia simile alla seguente:
- (void)endInterruptionWithFlags:(NSUInteger)flags;
{
if (flags == AVAudioSessionInterruptionFlags_ShouldResume && audioQueue != 0) {
NSLog(@"Current audio session - category: '%@' mode: '%@'",
[[AVAudioSession sharedInstance] category],
[[AVAudioSession sharedInstance] mode]);
NSError *error = nil;
OSStatus errorStatus;
if ((errorStatus = AudioSessionSetActive(true)) != noErr) {
error = [self errorForAudioSessionServiceWithOSStatus:errorStatus];
NSLog(@"Could not reactivate the audio session: %@",
[error localizedDescription]);
} else {
if ((errorStatus = AudioQueueStart(audioQueue, NULL)) != noErr) {
error = [self errorForAudioQueueServiceWithOSStatus:errorStatus];
NSLog(@"Could not restart the audio queue: %@",
[error localizedDescription]);
}
}
}
// ...
}
Se l'applicazione viene interrotto mentre è in primo piano, tutto funziona correttamente. Il problema appare, se l'interruzione avviene in background. Attivando il risultato sessione audio nell'errore gatto:
L'audio categoria sessione specificata non possono essere utilizzati per l'operazione tentata audio. Ad esempio, si è tentato di riprodurre o registrare audio con la categoria di sessione audio impostata su kAudioSessionCategory_AudioProcessing.
partire alla coda senza attivare i risultati di sessione nel codice di errore: -12985
A quel punto la categoria è impostato su AVAudioSessionCategoryPlayAndRecord e la modalità è AVAudioSessionModeDefault.
Non sono riuscito a trovare alcuna documentazione per questo messaggio di errore, né se è possibile riavviare una coda audio di input in background.
Ho pensato così. :-( –