2009-11-03 13 views
7

Hola, necesito reproducir una canción de la biblioteca de iTunes. Había revisado la Guía de acceso a la biblioteca del iPod Apples y obtuve el código.Cómo reproducir una canción de la biblioteca de iTunes en 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]; 

Pero esto comenzará a reproducirse desde el comienzo de la lista de la biblioteca. Necesito reproducir una canción cuando la selecciono de la lista. ¿Puede alguien ayudarme por favor ...

Gracias, Shibin.

Respuesta

6

Con la instancia MPMediaPickerController puede elegir entre la lista de canciones de la biblioteca de iPod, la lista de álbumes, etc. Aquí hay un ejemplo que selecciona todas las canciones del iPod y las muestra en un controlador de vista modal.

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

Ahora necesita implementar el delegado para almacenar la canción en su variable local. Aquí, selectedSongCollection es una instancia de MPMediaItemCollection.

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

Después de que haya terminado con la selección de la canción, poner en práctica el delegado para despedir el selector:

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

lo siento. Pero, ¿qué es selectedSongCollection? ¿Y qué es tipo de eso? – crazyoxygen

+0

@crazyoxygen: Como ya he mencionado en la respuesta, selectedSongCollection es una instancia de MPMediaItemCollection. –

+0

¿Puedo combinar esto con el sonido de notificación local? – crazyoxygen

2

Está asignando una lista de reproducción de todas las canciones al reproductor de música, por lo que, por supuesto, reproducirá toda la lista, empezando por el principio. Si desea que el usuario seleccione una canción específica de la biblioteca del iPod, use MPMediaPickerController.

2

que no podía usar el MPMediaPickerController en mi escenario.

Mi respuesta corta a la pregunta es tener un vistazo a [musicplayer setNowPlayingItem:item]

aquí hay un código de abajo de mi aplicación.

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

donde el jugador/DATAENV son mis únicos

#define PLAYER [[AudioController sharedAudioController_instance] musicPlayer] 
#define DATAENV [DataEnvironment sharedDataEnvironment_instance] 
Cuestiones relacionadas