如何在iphone中播放itunes库中的歌曲

如何在iphone中播放itunes库中的歌曲,iphone,ipod,Iphone,Ipod,嗨,我需要播放一首来自itunes库的歌曲。我已经阅读了苹果ipod库的访问指南,得到了代码 MPMediaQuery *everything = [[MPMediaQuery alloc] init]; NSLog(@"Logging items from a generic query..."); NSArray *itemsFromGenericQuery = [everything items]; MPMediaItem *song; for (song in itemsFromGene

嗨,我需要播放一首来自itunes库的歌曲。我已经阅读了苹果ipod库的访问指南,得到了代码

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];
但这将从库列表的一开始就开始播放。当我从列表中选择一首歌曲时,我需要播放它。谁能帮我一下吗

谢谢,
Shibin。

您正在为音乐播放器分配一个包含所有歌曲的播放列表,因此它当然会从开头开始播放整个列表。如果希望用户从iPod库中选择特定歌曲,请使用
MPMediaPickerController

使用可从iPod库的歌曲列表、唱片集列表等中选择的
MPMediaPickerController
实例。。下面是一个从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
mpmediateitemcollection
的一个实例

- (void) mediaPicker: (MPMediaPickerController *) mediaPicker didPickMediaItems: (MPMediaItemCollection *) mediaItemCollection 
{
    [self dismissModalViewControllerAnimated: YES];
    selectedSongCollection=mediaItemCollection; 
}
选择完歌曲后,执行委托以解除拾取者:

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

我无法在我的场景中使用
MPMediaPickerController

我对这个问题的简短回答是看一下
[MusicLayer 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];
}
我的单身汉在哪里

#define PLAYER  [[AudioController sharedAudioController_instance] musicPlayer]
#define DATAENV [DataEnvironment sharedDataEnvironment_instance]

@crazyoxygen:正如我在回答中已经提到的,selectedSongCollection是MPMediaItemCollection的一个实例。我可以将它与本地通知声音结合起来吗??