Riprodurre canzone nella tua app dall’iPod integrato

In questo tutorial dare uno sguardo a come utilizzare il framework MediaPlayer per riprodurre musica dalla tua app. Per cominciare abbiamo bisogno di importare il framework MediaPlayer nel nostro progetto (Guida pratica per Xcode 4) .

[code lang=”obj-c”]#import <MediaPlayer/MediaPlayer.h>[/code]

Ci sono tre classi principali con cui lavoreremo:

MPMusicPlayerController Esistono due tipi di MPMusicPlayerController

  • Application music player ([MPMusicPlayerController applicationMusicPlayer]) che riproduce la musica solo nella tua app e non influisce nell’applicazione iPod integrata
  • iPod music player ([MPMusicPlayerController iPodMusicPlayer]) che impiega l’applicazione iPod per riprodurre la musica – la musica può essere controllato da iPod e rimane  in riproduzione anche dopo aver chiuso la vostra applicazione.

I metodi MPMusicPlayerController sono abbastanza auto-esplicativi:

  • – SetQueueWithQuery:– setQueueWithItemCollection vengono utilizzati per impostare coda di riproduzione con query (vedi sotto)
  • – Play, – pausa – stop, – beginSeekingForward, – beginSeekingBackward, – endSeeking, – skipToNextItem, – skipToPreviousItem, – skipToBeginning sono tutti utilizzati per controllare il lettore
  • currentPlaybackTime, nowPlayingItem, playbackState, repeatMode, shuffleMode, volume sono tutte le proprietà del player che è possibile utilizzare per modificare il comportamento o visualizzare diversi attributi.

MPMediaItem MPMediaItem è un singolo elemento nel catalogo multimediale (come una canzone). È la proprietà nowPlayingItem del player. Ogni oggetto ha metadati associati ad esso, ai quali si può accedere chiamando il metodo valueForProperty:. L’elenco completo delle proprietà possono essere trovati nella documentazione, ma ecco alcuni esempi: MPMediaItemPropertyTitleMPMediaItemPropertyArtist. MPMediaQuery MPMediaQuery viene utilizzato per eseguire delle ricerche nella libreria iPod. Anche in questo caso, la descrizione completala trovi nella documentazione, ma un piccolo esempio dimostra come funziona MPMediaQuery:

[code lang=”obj-c”]MPMediaQuery* query = [MPMediaQuery songsQuery];
[query addFilterPredicate:[MPMediaPropertyPredicate predicateWithValue:@\”The Beatles\” forProperty:MPMediaItemPropertyArtist comparisonType:MPMediaPredicateComparisonEqualTo]];
[query setGroupingType:MPMediaGroupingAlbum];[/code]

Questo crea una query che seleziona tutti i brani il cui artista è “The Beatles” e li raggruppa per album. Tutte le canzoni nella query possono essere passate a MPMusicPlayerController per la riproduzione.

Esempio Ora metti tutto insieme:

[code lang=”obj-c”]
//crea l’stanza di MPMusicPlayerController

MPMusicPlayerController* myPlayer = [MPMusicPlayerController iPodMusicPlayer];

//crea una query che ritornerà tutti gli album di \”The Beatles\”

MPMediaQuery* query = [MPMediaQuery songsQuery];

[query addFilterPredicate:[MPMediaPropertyPredicate predicateWithValue:@\”The Beatles\” forProperty:MPMediaItemPropertyArtist comparisonType:MPMediaPredicateComparisonEqualTo]];

[query setGroupingType:MPMediaGroupingAlbum];

//passa la query al player

[myPlayer setQueueWithQuery:query];

//inizia la riproduzione e assegna una label contenete il nome e l’artwork della canzone in riproduzione

[myPlayer play];

nomeLabel.text = [myPlayer.nowPlayingItem valueForProperty:MPMediaItemPropertyTitle];

MPMediaItemArtwork *artWork = [myPlayer.nowPlayingItem valueForProperty:MPMediaItemPropertyArtwork];

artworkImage.image = [artWork imageWithSize:CGSizeMake(200, 200)];
[/code]

Inizia la riproduzione e assegna ad una label il nome e l’artwork (la cover) della canzone in riproduzione.

download codice sorgente