2009-11-03 16 views
7

こんにちは、私はiTunesライブラリから曲を再生する必要があります。私はAppleのipod Library Access Guideを読んでコードを手に入れました。iphoneでiTunesライブラリから曲を再生するには

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。

答えて

6

MPMediaPickerControllerインスタンスを使用すると、iPodライブラリの曲リスト、アルバムリストなどから選択できます。ここでは、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]; 
} 
+0

です。しかし、selectedSongCollectionとは何ですか?そしてそれのタイプは何ですか? – crazyoxygen

+0

@crazyoxygen:答えですでに述べたように、selectedSongCollectionはMPMediaItemCollectionのインスタンスです。 –

+0

これをローカル通知音と組み合わせることはできますか? – crazyoxygen

2

すべての曲の再生リストを音楽プレーヤーに割り当てるので、最初からリスト全体を再生します。ユーザーがiPodライブラリから特定の曲を選択するようにするには、MPMediaPickerControllerを使用します。

2

私は私のシナリオで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] 
関連する問題