1

저는 iOS의 iPod Music 앱과 통합되는 응용 프로그램을 만들고 있습니다. 여러 음악 그룹 (예 : MPMediaItemCollections)을 표시하며 사용자가 [MPMusicPlayerController ipodMusicPlayer]를 사용하여 음악 앱에서 이러한 그룹을 재생할 수 있습니다.MPMusicPlayerController에서 MPMediaItemCollection을 재생했지만 사용자가 첫 번째 항목을 선택하도록 하시겠습니까?

내 문제는 내 앱과 뮤직 앱간에 동일한 방식으로 작동하는 셔플 기능을 가져 오는 데 어려움이 있습니다. 노래를 부를 때 나는 다음과 같이 전화한다.

MPMusicPlayerController* musicPlayer = [MPMusicPlayerController iPodMusicPlayer]; 
[musicPlayer stop]; 
MPMediaItemCollection* collection = [self.displayedContainerGroup getMediaItemCollection]; 
[musicPlayer setQueueWithItemCollection:collection]; 
[musicPlayer setNowPlayingItem:[container getMediaItem]; 
[musicPlayer play]; 

이것은 셔플이 꺼져 있으면 효과가있다. 사용자가 앨범의 일부인 노래를 선택하면 음악 앱에서 앨범이 재생되고 지정된 노래에서 시작됩니다.

shuffle이 켜져있는 경우 노래가 먼저 임의로 섞은 다음 처음부터 순서대로 새 nowPlayingItem으로 이동합니다.이 문제는 nowPlayingItem이 처음 순서대로 섞어서, 앨범에있는 모든 노래를 연주하지 않습니다.

MPMusicPlayerController 설명서에서 nowPlayingItem에 대해 말합니다. "재생 대기열의 특정 미디어 항목에서 재생을 시작하도록 지정하려면 음악 플레이어가 중지되거나 일시 중지 된 동안이 속성을 해당 항목으로 설정하십시오."

셔플 모드에서이 작업을 수행하는 방법이 있는지 궁금합니다. 앨범에서 하나의 사용자가 선택한 노래에서 시작한 다음 나머지 모든 노래를 재생합니다. 아니면 그냥 사용자 지정 MPMediaItemCollection 만들고 셔플 직접해야합니까?

답변

0

이것은 효과가있는 것 같습니다. 셔플을 끄고 노래를 추가하고 지금 재생중인 항목으로 전환 한 다음 셔플을 다시 켜야했습니다.

[musicPlayer stop]; 
BOOL shuffleWasOn = NO; 
if (musicPlayer.shuffleMode != MPMusicShuffleModeOff) 
{ 
    musicPlayer.shuffleMode = MPMusicShuffleModeOff; 
    shuffleWasOn = YES; 
} 
[musicPlayer setQueueWithItemCollection:mediaItemCollectionIn]; 
[musicPlayer setNowPlayingItem:mediaItemIn]; 
if (shuffleWasOn) 
    musicPlayer.shuffleMode = MPMusicShuffleModeSongs; 

[musicPlayer play];