iOS デバイスで現在 iPod で再生中の曲情報を取得するには

October 27, 2011

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\];
}
}
iOS Objective-C

tilfin freelance software engineer