読者です 読者をやめる 読者になる 読者になる

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

iPhone, iPad, iPod touch で音楽などを再生したりするには、MediaPlayer.framework を使います。

MPMusicPlayerController が音楽を再生を制御するコントローラクラスでこのクラスメソッドの iPodMusicPlayer を使うと iPod のコントローラが取得できます。
さらに nowPlayingItem プロパティからその名の通り再生中(一時停止している場合も含む)のデータを MPMediaItem インスタンスで取得できます。
MPMediaItem からメタデータを各フィールドを表す定数を指定して取り出せます。アイテムの種別は MPMediaItemPropertyMediaType で NSInteger をカプセル化した NSNumber で取得できます。

以下は、曲を再生中の場合に曲名、アルバム名、アーティストそしてアートワークの80x80画像をそれぞれ取得しています。

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