2013-01-09 3 views
4

iOS에서 MPMusicPlayerControllerMPMedaiItem을 재생하려고합니다. 제 경우에는 재생 목록의 노래를 보여주는 UITableView이 있습니다. UITableView에서 셀을 탭하면 해당 노래를 MPMusicPlayerController과 함께 재생하고 싶습니다. 그리고 다음 버튼을 누르면 재생 목록의 다음 노래를 건너 뛰고 싶습니다. 어떻게 재생할 수 있습니까?iOS의 MPMusicPlayerController에서 MPMediaItem을 재생하는 방법은 무엇입니까?

다음은 didSelected 방법 (UITableView)으로 작성한 코드입니다. 아무것도 재생되지 않습니다.

MPMediaItemCollection *songs = [self.arrayOfSongs objectAtIndex:indexPath.row ]; 

    MPMediaItem *item = [songs representativeItem ]; 

    NSLog(@"%@",[item valueForProperty:MPMediaItemPropertyTitle ]); 

    [self.player setNowPlayingItem:[item valueForProperty:MPMediaItemPropertyAssetURL]]; 

    [self.player play ]; 

답변

3

이 경우에는 AVPlayer를 사용하는 것이 더 쉽습니다.

헤더 파일에서 AVPlayer 객체를 선언하십시오. 같이 당신의 방법 파일 사용 뭔가 그런

AVPlayer *audioPlayer; 

:

if(!audioPlayer){ 
    audioPlayer = [[AVPlayer alloc] initWithURL:[item valueForProperty:MPMediaItemPropertyAssetURL]]; 
} else { 
    [audioPlayer replaceCurrentItemWithPlayerItem:[AVPlayerItem playerItemWithURL:itemURL]]; 
} 
[audioPlayer play]; 
8

나는이 조금 늦게 알아,하지만 문제는 MPMusicPlayerControllernowPlayingItem 속성은 MPMediaItem 객체를 기대하는, 당신이있어 애셋의 URL이 포함 된 NSString을 전달합니다. 이것이 어떻게 달성 될 수 있는지에 대한 예가 있습니다.

MPMusicPlayerController *controller = [MPMusicPlayerController iPodMusicPlayer]; 

MPMediaItemCollection *collection = [[MPMediaItemCollection alloc] initWithItems:arrayOfMediaItems]; 
MPMediaItem *item = [collection representativeItem]; 

[controller setQueueWithItemCollection:collection]; 
[controller setNowPlayingItem:item]; 

[controller prepareToPlay]; 
[controller play]; 
관련 문제