2009-11-03 9 views
7

Hi Ich muss ein Lied aus der Itunes-Bibliothek spielen. Ich hatte den Apples ipod Library Access Guide durchlaufen und den Code bekommen.Wie man ein Lied aus der Itunes-Bibliothek in iPhone

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]; 

Aber Dies beginnt mit dem Abspielen von Anfang der Bibliotheksliste. Ich muss ein Lied spielen, wenn ich es aus der Liste auswählen. Kann mir bitte helfen ...

Danke, Shibin.

Antwort

6

Mithilfe der MPMediaPickerController Instanz können Sie aus der Titelliste, der Albumliste usw. der iPod-Bibliothek wählen. Hier ist ein Beispiel, das alle Titel vom iPod auswählt und in einem Modal View-Controller angezeigt wird.

Jetzt müssen Sie den Delegaten implementieren, um den Song in Ihrer lokalen Variablen zu speichern. Hier ist selectedSongCollection eine Instanz von MPMediaItemCollection.

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

Nachdem Sie mit der Auswahl der Songs fertig sind, implementieren die Delegierten die Picker zu entlassen:

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

Es tut mir leid. Aber was ist ausgewähltSongCollection? Und was ist das für ein Typ ??? – crazyoxygen

+0

@crazyoxygen: Wie bereits in der Antwort erwähnt, ist selectedSongCollection eine Instanz von MPMediaItemCollection. –

+0

Kann ich das mit lokalem Notification Sound kombinieren? – crazyoxygen

2

Sie ordnen dem Musik-Player eine Wiedergabeliste mit allen Titeln zu, so dass natürlich die gesamte Liste abgespielt wird, beginnend am Anfang. Wenn Sie möchten, dass der Benutzer einen bestimmten Titel aus der iPod-Bibliothek auswählt, verwenden Sie MPMediaPickerController.

2

ich nicht die MPMediaPickerController in meinem Szenario nutzen könnte.

Meine kurze Antwort auf Frage ist, einen Blick haben bei [musicplayer setNowPlayingItem:item]

hier einige Code unten aus meiner Implementierung.

// 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]; 
} 

Wo PLAYER/DATAENV meine Singletons sind

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