无法在iOS5中使用AVQueuePlayer播放背景音乐
问题描述:
我试图构建应用程序播放本地音乐,但不幸的是,我无法使用AVQueuePlayer在iOS5中进行背景音频播放。无法在iOS5中使用AVQueuePlayer播放背景音乐
在我viewDidLoad中,我得到这个代码:
// Player setup
mAudioPlayer = [[AVQueuePlayer alloc] init];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playerItemDidReachEnd:) name:AVPlayerItemDidPlayToEndTimeNotification object:nil];
[mAudioPlayer addPeriodicTimeObserverForInterval:CMTimeMakeWithSeconds(1.0, 1) queue:NULL usingBlock:^(CMTime time) {
[self updatePositionOnDisplay];
}];
// Audio session setup
NSError *setCategoryErr = nil;
NSError *activationErr = nil;
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: &setCategoryErr];
[[AVAudioSession sharedInstance] setActive: YES error: &activationErr];
这里是我的 “playerItemDidReachEnd” 的方法:
- (void)playerItemDidReachEnd:(NSNotification*)notification
{
NSLog(@"playerItemDidReachEnd");
UIBackgroundTaskIdentifier newTaskID = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
[[UIApplication sharedApplication] endBackgroundTask:newTaskID];
}];
NSLog(@"playerItemDidReachEnd 2");
NSLog(@"searching next song");
mCurrentSong = [self getNextSongWithIsSwitched:NO];
if(mCurrentSong != nil){
NSLog(@"Start : %@ - %@", mCurrentSong.artist, mCurrentSong.title);
mTapeTitle.text = [NSString stringWithFormat:@"%@ - %@", mCurrentSong.artist, mCurrentSong.title];
AVPlayerItem* i = [[AVPlayerItem alloc] initWithURL:[NSURL URLWithString:mCurrentSong.path]];
if(i != nil){
[mAudioPlayer insertItem:i afterItem:nil];
}else
NSLog(@"BING!! no AVPlayerItem created for song's path: %@", mCurrentSong.path);
[i release];
}else{
NSLog(@"no song found");
[mAudioPlayer pause];
isPlaying = NO;
[mPlayButton setSelected:NO];
}
[[UIApplication sharedApplication] endBackgroundTask:newTaskID];
newTaskID = UIBackgroundTaskInvalid;
}
当我开始播放,它的工作原理,并保持当我切换播放关闭屏幕。但是,当歌曲结束后,这里的日志
2012-03-01 10:00:27.342 DEMO[3096:707] playerItemDidReachEnd
2012-03-01 10:00:27.360 DEMO[3096:707] playerItemDidReachEnd 2
2012-03-01 10:00:27.363 DEMO[3096:707] searching next song
2012-03-01 10:00:27.381 DEMO[3096:707] Start : Moby - Ah-Ah
但没有歌曲有效启动...
谁能告诉我什么是错我的代码?
非常感谢。
答
试评下一行
[[UIApplication sharedApplication] endBackgroundTask:newTaskID];
newTaskID = UIBackgroundTaskInvalid;
,如果它工作,那么你需要一个观察者添加到mAudioPlayer为“currentItem.status”时,状态AVPlayerStatusReadyToPlay然后结束后台任务