2010-07-21 20 views
6

Próbuję odtworzyć sekwencję plików audio w tle za pomocą AVAudioPlayer. Gdy aplikacja nie działa w tle, gra się dobrze, ale gdy aplikacja przejdzie w tło, nie będzie odtwarzać drugiej piosenki.iphone: odtwarzanie listy odtwarzania audio w tle?

Oto mój kod:

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

} 

I debugowania aplikacji i wydaje się, że jeśli chodzi o gry na drugą SONG [PLAY] mainController.audioPlayer zwraca NO, co oznacza, że ​​nie może grać. Więc co o tym myślisz?


UPDATE

Po pewnym badań wydaje się, że ma nadal grać poprawnie tylko wtedy, gdy śluz urządzenia, ale jeśli użytkownik naciśnie przycisk home i aplikacja przechodzi do tła problem nadal pozostaje

+0

Trochę pomoc dla Ciebie: http://stackoverflow.com/questions/3161635/entering-background-on-ios4-to-play-audio/3161899#3161899 – iwasrobbed

+0

Tak spojrzałem w tym wątku przed, a część mojego kodu jest stamtąd. z jakiegoś powodu AVAudioPlayer odmawia odtworzenia nowego utworu, gdy jest w tle. – Alex1987

+0

@IWasRobbed - Wygląda na to, że masz podobny problem. czy możesz opublikować część swojego kodu? Dzięki – Alex1987

Odpowiedz

Powiązane problemy