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
Trochę pomoc dla Ciebie: http://stackoverflow.com/questions/3161635/entering-background-on-ios4-to-play-audio/3161899#3161899 – iwasrobbed
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
@IWasRobbed - Wygląda na to, że masz podobny problem. czy możesz opublikować część swojego kodu? Dzięki – Alex1987