Estoy tratando de reproducir la secuencia de archivos de audio en segundo plano usando AVAudioPlayer. Cuando la aplicación no está en segundo plano, funciona bien, pero cuando la aplicación pasa al segundo plano no reproduce la segunda canción.iphone: ¿reproducción de lista de reproducción de audio en segundo plano?
Aquí está mi código:
-(void)playAudio:(NSString *)path{
NSURL *url = [NSURL fileURLWithPath:path];
NSError *error;
AVAudioPlayer *ap = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
[[AVAudioSession sharedInstance] setActive: YES error: nil];
ap.delegate = self;
mainController.audioPlayer = ap;
[ap release];
if (mainController.audioPlayer == nil)
NSLog([error description]);
else{
UIBackgroundTaskIdentifier newTaskId = UIBackgroundTaskInvalid;
[mainController.audioPlayer prepareToPlay];
if([mainController.audioPlayer play]){
newTaskId = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:NULL];
}
if (newTaskId != UIBackgroundTaskInvalid && bgTaskId != UIBackgroundTaskInvalid)
[[UIApplication sharedApplication] endBackgroundTask: bgTaskId];
bgTaskId = newTaskId;
}
}
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag{
NSLog(@"finished now next...");
[self playAudio:[self getNextAudio]];
}
que depura la aplicación y parece que cuando está a punto de jugar la segunda canción [mainController.audioPlayer juego] devuelve NO, lo que significa que no puede jugar. Entonces, ¿qué piensas?
ACTUALIZACIÓN
Después de algunas pruebas, parece que no siguen desempeñando adecuadamente sólo si el dispositivo se bloquea, pero si el usuario presiona el botón de inicio y la aplicación va al fondo del problema sigue siendo
Un poco de ayuda para usted: http://stackoverflow.com/questions/3161635/entering-background-on-ios4-to-play-audio/3161899#3161899 – iwasrobbed
Sí Miré en ese hilo antes, y parte de mi código es de allí. por algún motivo, AVAudioPlayer se niega a reproducir una nueva pista cuando está en segundo plano. – Alex1987
@IWasRobbed - Parece que tuvo un problema similar. ¿puedes publicar algo de tu código? Gracias – Alex1987