2010-07-21 27 views
6

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

+0

Un poco de ayuda para usted: http://stackoverflow.com/questions/3161635/entering-background-on-ios4-to-play-audio/3161899#3161899 – iwasrobbed

+0

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

+0

@IWasRobbed - Parece que tuvo un problema similar. ¿puedes publicar algo de tu código? Gracias – Alex1987

Respuesta

9

LA SOLUCIÓN

Simplemente agregue [[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; y algunos otros ajustes. Todo está aquí

https://devforums.apple.com/message/264397

+0

salvavidas absoluto! He estado buscando en Google por un día y medio :) – kritzikratzi

+0

el enlace a la explicación está roto – Shaybc

Cuestiones relacionadas