2010-07-21 4 views
6

J'essaye de lire la séquence de fichiers audio en arrière-plan en utilisant AVAudioPlayer. Lorsque l'application n'est pas en arrière-plan, elle fonctionne bien, mais lorsque l'application passe en arrière-plan, elle ne joue pas la deuxième chanson.iphone: lecture de la liste de lecture audio en arrière-plan?

Voici mon code:

-(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]]; 

} 

Je débogué l'application et il semble que quand il est sur le point de jouer le second [jeu mainController.audioPlayer] chanson retourne NO, ce qui signifie qu'il ne peut pas jouer. Alors, qu'en pensez-vous?


MISE À JOUR

Après quelques essais, il semble que cela ne continue à jouer correctement que si l'appareil verrouille, mais si l'utilisateur appuie sur le bouton d'accueil et l'application va à l'arrière-plan le problème reste encore

+0

Un peu d'aide pour vous: http://stackoverflow.com/questions/3161635/entering-background-on-ios4-to-play-audio/3161899#3161899 – iwasrobbed

+0

Ouais je regardais à ce fil avant, et une partie de mon code est de là. pour une raison quelconque, AVAudioPlayer refuse de lire une nouvelle piste lorsqu'il est en arrière-plan. – Alex1987

+0

@IWasRobbed - Il semble que vous ayez eu un problème similaire. pouvez-vous poster une partie de votre code? Merci – Alex1987

Répondre

9

LA SOLUTION

Ajoutez simplement [[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; et quelques autres réglages. Il est tout ici

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

+0

sauveteur absolue! J'ai été googling pour cela pendant un jour et demi :) – kritzikratzi

+0

lien à l'explication est brisée – Shaybc