7

こんにちは、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];

ただし、これはライブラリ リストの最初から再生を開始します。リストから曲を選択したときに曲を再生する必要があります。誰でも私を助けてくれませんか...

ありがとう、シビン。

4

3 に答える 3

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]; 
}
于 2009-11-03T05:08:23.790 に答える
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]
于 2010-12-30T03:29:53.727 に答える
2

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

于 2009-11-03T03:48:53.983 に答える