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: e – 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: MPMediaItemPropertyTitle o MPMediaItemPropertyArtist. 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.