Estoy desarrollando un transmisor de audio y he declarado un oyente de interrupción para guardar el estado de una canción cuando ocurre una interrupción, como una llamada entrante o un sms.Manejo de interrupciones con la cola de audio
Aquí está el código correspondiente
En mi AppDelegate, tengo este
AudioSessionInitialize (NULL, NULL, interruptionListenerCallback, self);
AudioSessionSetActive(YES);
Esto es lo que el oyente interrupción parece
void interruptionListenerCallback (void *inUserData, UInt32 interruptionState) {
// This callback, being outside the implementation block, needs a reference
//to the AudioPlayer object
MyPlayer *player = (MyPlayer *)inUserData;
if (interruptionState == kAudioSessionBeginInterruption) {
if ([player audioStreamer]) {
// if currently playing, pause
[player pausePlayback];
player.interruptedOnPlayback = YES;
}
} else if ((interruptionState == kAudioSessionEndInterruption) && player.interruptedOnPlayback) {
// if the interruption was removed, and the app had been playing, resume playback
[player resumePlayback];
player.interruptedOnPlayback = NO;
}
}
Cuando consigo una llamada telefónica se llama al oyente de interrupción y, si el usuario rechaza la llamada, el método de reanudación de la reproducción también se llama. Pero antes de que se llama al método resumePlayback, me sale este error en la consola de AudioQueueEnqueueBuffer
error: tca! error int: 560030580
¿Alguien tiene una idea de cómo manejar correctamente interrupciones de audio al reproducir archivos de audio.
Gracias.
En mi caso esto fue porque paré la sesión antes de pausar un AVPlayer en reproducción. – Drew