2012-03-01 11 views
0

ローカル音楽を再生するためのアプリを作成しようとしていますが、残念ながらiOS5のAVQueuePlayerでオーディオ再生ができません。私のviewDidLoadでAVQueuePlayerのiOS5でバックグラウンドでオーディオ再生ができない

は、私はこのコードを持って:私は、それが動作、再生を開始し、私は切り替えたときに再生し続ける場合は

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

:ここ

// 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" 方法であり、画面から消えます。曲が終わったときには、ここではログ

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 

があるしかし、誰の曲が効果的に開始していない...

誰もが私のコードで間違って何を教えてもらえます?

ありがとうございます。それが動作するかどうか

答えて

0

は、ステータスAVPlayerStatusReadyToPlayはその後、バックグラウンドタスク

を終了するときに「currentItem.status」のmAudioPlayerにオブザーバーを追加する必要がありますし、次の行

[[UIApplication sharedApplication] endBackgroundTask:newTaskID]; 
newTaskID = UIBackgroundTaskInvalid; 

をコメントしよう

関連する問題