我想用AVAudioPlayer在後臺播放音頻文件的序列。當應用程序不在背景中時,播放效果很好,但當應用程序轉到背景時,它不會播放第二首歌曲。iphone:在後臺播放音頻播放列表?
這裏是我的代碼:
-(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]];
}
我調試的應用程序,它似乎是當它即將播放的第二首歌[mainController.audioPlayer播放]返回NO,這意味着它不能播放。 那你覺得呢?
UPDATE
一些測試後,它似乎並繼續正常播放只有當設備鎖,但如果用戶按下home鍵和應用程序轉到後臺問題仍然存在
一點幫助你:http://stackoverflow.com/questions/3161635/entering-background-on-ios4-to-play-audio/3161899#3161899 – iwasrobbed 2010-07-21 13:14:58
是的,我看了在那個線程之前,我的代碼的一部分是從那裏。出於某種原因,AVAudioPlayer拒絕在背景中播放新曲目。 – Alex1987 2010-07-21 17:11:25
@IWasRobbed - 看起來你有類似的問題。你可以發佈一些你的代碼嗎?謝謝 – Alex1987 2010-07-21 20:41:21