iPhone의 iTunes 라이브러리에서 노래를 재생하는 방법
문제
안녕하세요 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]
제휴하지 않습니다 StackOverflow