Domanda

Ciao ho bisogno di giocare un brano dalla libreria di iTunes. Ero andato attraverso le mele iPod Libreria Guida di accesso e ottenuto il codice.

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

Ma questo modo si avvia la riproduzione dall'inizio della lista biblioteca. Ho bisogno di giocare una canzone quando si seleziona dalla lista. Qualcuno mi può aiutare per favore ...

Grazie, Shibin.

È stato utile?

Soluzione

utilizzando l'istanza MPMediaPickerController è possibile scegliere tra elenco dei brani della libreria iPod, elenco degli album, ecc .. Ecco un esempio che seleziona tutte le canzoni da iPod e visualizza in un controller di vista modale.

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

Ora è necessario implementare il delegato per memorizzare il brano nella vostra variabile locale. Qui, selectedSongCollection è un'istanza di MPMediaItemCollection.

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

Dopo aver finito con la selezione del brano, implementare il delegato per chiudere il selettore:

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

Altri suggerimenti

Si sta assegnando una playlist di tutti i brani al lettore musicale, così naturalmente sta andando a giocare l'intero elenco, partendo dall'inizio. Se si desidera che l'utente di selezionare un brano specifico dalla libreria iPod, utilizzare MPMediaPickerController.

Non ho potuto utilizzare theMPMediaPickerController nel mio scenario.

La mia breve risposta alla domanda è quello di avere uno sguardo a [musicplayer setNowPlayingItem:item]

ecco qualche codice di seguito dalla mia implementazione.

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

in cui il giocatore / DATAENV sono i miei single

#define PLAYER  [[AudioController sharedAudioController_instance] musicPlayer]
#define DATAENV [DataEnvironment sharedDataEnvironment_instance]
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top