Je développe un streamer audio et ai déclaré un écouteur d'interruption pour sauvegarder l'état d'un morceau lorsqu'une interruption se produit - comme un appel entrant ou un sms.Gestion des interruptions avec la file d'attente audio
Voici le code correspondant
Dans mon AppDelegate, j'ai cette
AudioSessionInitialize (NULL, NULL, interruptionListenerCallback, self);
AudioSessionSetActive(YES);
C'est ce que l'auditeur d'interruption ressemble
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;
}
}
Quand je reçois un appel téléphonique l'auditeur d'interruption est appelé et si l'utilisateur refuse l'appel le La méthode de reprise de lecture est également appelée. Mais avant que la méthode resumePlayback est appelée, je reçois cette erreur de la console pour AudioQueueEnqueueBuffer
error: tca! error int: 560030580
Est-ce que quelqu'un a une idée de la façon de gérer correctement les interruptions audio lorsque des fichiers audio en continu.
Merci.
Dans mon cas, c'était parce que j'ai arrêté la session avant de mettre en pause un AVPlayer en cours de lecture. – Drew