Frage

Hallo ich brauche einen Song aus der iTunes-Bibliothek zu spielen. Ich hatte durch die Äpfel ipod Bibliothek Access Guide gegangen und bekam den Code.

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 von Anfang an von der Bibliotheksliste zu spielen. Ich brauche einen Song zu spielen, wenn ich es aus der Liste auswählen. Kann mir jemand bitte helfen ...

Danke, Shibin.

War es hilfreich?

Lösung

Mit der MPMediaPickerController Instanz, die Sie aus der Titelliste, Albumliste der iPod-Bibliothek können wählen, etc .. Hier ist ein Beispiel, das alle Songs aus dem iPod und zeigt in einem modalen View-Controller auswählt.

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

Nun müssen Sie die Delegierten implementieren, den Song in die lokale Variable zu speichern. Hier selectedSongCollection ist eine Instanz MPMediaItemCollection.

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

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

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

Andere Tipps

Sie eine Playlist mit allen Songs auf den Musik-Player zuordnen, so natürlich ist es die gesamte Liste spielen wird, am Anfang beginnen. Wenn Sie der Benutzer ein bestimmtes Lied aus der iPod-Bibliothek möchten, verwenden Sie MPMediaPickerController.

Ich kann nicht theMPMediaPickerController in meinem Szenario verwenden.

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

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 sind meine Singletons

#define PLAYER  [[AudioController sharedAudioController_instance] musicPlayer]
#define DATAENV [DataEnvironment sharedDataEnvironment_instance]
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top