iPhone, iPad, iPod touch で音楽などを再生したりするには、MediaPlayer.framework を使います。
MPMusicPlayerController が音楽を再生を制御するコントローラクラスでこのクラスメソッドの iPodMusicPlayer を使うと iPod のコントローラが取得できます。
さらに nowPlayingItem プロパティからその名の通り再生中(一時停止している場合も含む)のデータを MPMediaItem インスタンスで取得できます。
MPMediaItem からメタデータを各フィールドを表す定数を指定して取り出せます。アイテムの種別は MPMediaItemPropertyMediaType で NSInteger をカプセル化した NSNumber で取得できます。
以下は、曲を再生中の場合に曲名、アルバム名、アーティストそしてアートワークの80x80画像をそれぞれ取得しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| #import <MediaPlayer/MediaPlayer.h> MPMusicPlayerController *pc = \[MPMusicPlayerController iPodMusicPlayer\]; MPMediaItem *playingItem = \[pc nowPlayingItem\]; if (playingItem) { NSInteger mediaType = \[\[playingItem valueForProperty:MPMediaItemPropertyMediaType\] integerValue\]; if (mediaType == MPMediaTypeMusic) { NSString *songTitle = \[playingItem valueForProperty:MPMediaItemPropertyTitle\]; NSString *albumTitle = \[playingItem valueForProperty:MPMediaItemPropertyAlbumTitle\]; NSString *artist = \[playingItem valueForProperty:MPMediaItemPropertyArtist\]; textView.text = \[NSString stringWithFormat:@"%@ \- %@ / %@", artist, songTitle, albumTitle\]; MPMediaItemArtwork *artwork = \[playingItem valueForProperty:MPMediaItemPropertyArtwork\]; UIImage *artworkImage = \[artwork imageWithSize:CGSizeMake(80.0, 80.0)\]; UIImageView *artworkImageView = \[\[UIImageView alloc\] initWithImage:artworkImage\]; } }
|
tilfin
freelance software engineer