문제

안녕하세요 iTunes 라이브러리에서 노래를 연주해야합니다. Apples iPod Library Access Guide를 살펴보고 코드를 얻었습니다.

MPMediaQuery *everything = [[MPMediaQuery alloc] init];
NSLog(@"Logging items from a generic query...");
NSArray *itemsFromGenericQuery = [everything items];
MPMediaItem *song;
for (song in itemsFromGenericQuery) 
{
    NSString *songTitle = [song valueForProperty: MPMediaItemPropertyTitle];
    NSLog (@"%@", songTitle);
}

//assign a playback queue containing all media items on the device
[myPlayer setQueueWithQuery:everything];//setQueueWithQuery:everything];

//start playing from the begining
[myPlayer play];

그러나 이것은 라이브러리 목록의 시작부터 재생이 시작됩니다. 목록에서 선택할 때 노래를 연주해야합니다. 누구든지 나를 도와 줄 수 있습니까 ...

고마워, 시빈.

도움이 되었습니까?

해결책

사용 MPMediaPickerController iPod Library의 노래 목록, 앨범 목록 등에서 선택할 수 있습니다. iPod에서 모든 노래를 선택하고 모달보기 컨트롤러에서 디스플레이를 선택하는 예입니다.

- (IBAction) selectSong: (id) sender 
{   
    MPMediaPickerController *picker =
    [[MPMediaPickerController alloc] initWithMediaTypes: MPMediaTypeMusic];

    picker.delegate                     = self;
    picker.allowsPickingMultipleItems   = NO;
    picker.prompt                       = NSLocalizedString (@"Select any song from the list", @"Prompt to user to choose some songs to play");

    [self presentModalViewController: picker animated: YES];
    [picker release]; 
}

이제 노래를 로컬 변수에 저장하려면 대의원을 구현해야합니다. 여기, selectedSongCollection 인스턴스입니다 MPMediaItemCollection.

- (void) mediaPicker: (MPMediaPickerController *) mediaPicker didPickMediaItems: (MPMediaItemCollection *) mediaItemCollection 
{
    [self dismissModalViewControllerAnimated: YES];
    selectedSongCollection=mediaItemCollection; 
}

노래를 선택한 후에는 피커를 기각 할 대의원을 구현하십시오.

- (void) mediaPickerDidCancel: (MPMediaPickerController *) mediaPicker 
{   
    [self dismissModalViewControllerAnimated: YES]; 
}

다른 팁

모든 노래의 재생 목록을 음악 플레이어에게 할당하므로 처음부터 시작하여 전체 목록을 재생할 것입니다. 사용자가 iPod 라이브러리에서 특정 노래를 선택하도록하려면 사용하십시오. MPMediaPickerController.

나는 그것을 사용할 수 없었다MPMediaPickerController 내 시나리오에서.

질문에 대한 나의 짧은 대답은 [musicplayer setNowPlayingItem:item]

다음은 내 구현에서 아래 코드입니다.

// Create a new query
MPMediaQuery *query = [MPMediaQuery songsQuery];
MPMediaPropertyPredicate *mpp = [MPMediaPropertyPredicate predicateWithValue:@"a" forProperty:MPMediaItemPropertyTitle comparisonType:MPMediaPredicateComparisonContains];
[query addFilterPredicate:mpp]; 

// Retrieve the results and reload the table data
DATAENV.songCollections = [NSMutableArray arrayWithArray:query.collections];

//populate cell rows with 

- (UITableViewCell *)tableView:(UITableView *)tView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    MPMediaItem *item = [[[DATAENV.songCollections objectAtIndex:indexPath.row] items] lastObject];
    titleLbl = [item valueForProperty:MPMediaItemPropertyTitle];
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    MPMediaItem *item = [[[self.songCollections objectAtIndex:indexPath.row] items] lastObject];
    [PLAYER setNowPlayingItem:item];
    [PLAYER play];
}

Player/ Dataenv가 내 싱글 톤 인 곳

#define PLAYER  [[AudioController sharedAudioController_instance] musicPlayer]
#define DATAENV [DataEnvironment sharedDataEnvironment_instance]
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top