The jonki

呼ばれて飛び出てじょじょじょじょーんき

【iOS】iPod Library Accessの使い方(1)曲情報を取得する

iPod Library Accessなるものを使えば実機のiPodの曲にアクセスできます。MediaPlayer.frameworksをインポートしておきましょう。

コード

TestViewController.h
#import <MediaPlayer/MediaPlayer.h>

// 略

// どっかにこれを宣言しておく
@property MPMusicPlayerController *player;
TestViewController.m
- (void)viewDidLoad
{
    [super viewDidLoad];
	// Do any additional setup after loading the view, typically from a nib.
    // Viewのロード時に全曲読み込んでシャッフル再生をはじめる
    _player = [MPMusicPlayerController applicationMusicPlayer];
    [_player setQueueWithQuery:[MPMediaQuery songsQuery]];
    [_player setShuffleMode:MPMusicShuffleModeSongs];
    [_player play];
}

// 略

- (void)showNowPlayingSongInfo {
    NSLog(@"現在再生中の曲情報を表示する");
    MPMediaItem *nowPlayingItem = [_player nowPlayingItem];
    NSLog(@"Genre       = %@", [nowPlayingItem valueForProperty:MPMediaItemPropertyGenre]);
    NSLog(@"Album Title = %@", [nowPlayingItem valueForProperty:MPMediaItemPropertyAlbumTitle]);
    NSLog(@"Artist      = %@", [nowPlayingItem valueForProperty:MPMediaItemPropertyArtist]);
    NSLog(@"Title       = %@", [nowPlayingItem valueForProperty:MPMediaItemPropertyTitle]);
}

- (void)showSongInfoWithSongQuery {
    NSLog(@"曲名でソートして、全曲リストを表示する");
    MPMediaQuery *query = [MPMediaQuery songsQuery];
    int counter = 0;
    for( MPMediaItem *item in [query items])
    {
        NSLog(@"%@", [item valueForProperty:MPMediaItemPropertyTitle]);
        ++counter;
        if(counter > 4) break; // 全部出すと多いのでこの辺でbreak
    }
}

- (void)showSongInfoWithArtistQuery {
    NSLog(@"アーティスト名でソートして、全曲リストを表示する");
    MPMediaQuery *query = [MPMediaQuery artistsQuery];
    int counter = 0;
    for( MPMediaItem *item in [query items])
    {
        NSLog(@"%@", [item valueForProperty:MPMediaItemPropertyArtist]);
        ++counter;
        if(counter > 4) break; // 全部出すと多いのでこの辺でbreak
    }
}

- (void)showPlaylistInfo {
    NSLog(@"プレイリストを表示する");
    MPMediaQuery *query = [MPMediaQuery playlistsQuery];
    for( MPMediaPlaylist *plist in [query collections] )
    {
        NSLog(@"%@", [plist valueForProperty:MPMediaPlaylistPropertyName]);
    }
}

- (IBAction)debugButtonPush:(id)sender {
    [self showNowPlayingSongInfo];
    [self showSongInfoWithSongQuery];
    [self showSongInfoWithArtistQuery];
    [self showPlaylistInfo];
}
出力結果例
現在再生中の曲情報を表示する
2012-12-26 18:18:26.150 JPlayer[1907:707] 
Genre       = ロック
2012-12-26 18:18:26.152 JPlayer[1907:707] Album Title = 500 Greatest Rock Classics
2012-12-26 18:18:26.154 JPlayer[1907:707] Artist      = 500 Greatest Rock Classics
2012-12-26 18:18:26.155 JPlayer[1907:707] Title       = Good Times Bad Times
2012-12-26 18:18:26.156 JPlayer[1907:707] 曲名でソートして、全曲リストを表示する
2012-12-26 18:18:26.363 JPlayer[1907:707] あぁ青春
2012-12-26 18:18:26.364 JPlayer[1907:707] あいあい
2012-12-26 18:18:26.366 JPlayer[1907:707] アイシテル
2012-12-26 18:18:26.367 JPlayer[1907:707] アイソトープ
2012-12-26 18:18:26.369 JPlayer[1907:707] アイデンティティー (Live ver)
2012-12-26 18:18:26.370 JPlayer[1907:707] アーティスト名でソートして、全曲リストを表示する
2012-12-26 18:18:26.716 JPlayer[1907:707] 絢香 × コブクロ
2012-12-26 18:18:26.718 JPlayer[1907:707] 絢香
2012-12-26 18:18:26.719 JPlayer[1907:707] 絢香
2012-12-26 18:18:26.720 JPlayer[1907:707] 絢香
2012-12-26 18:18:26.722 JPlayer[1907:707] 絢香
2012-12-26 18:18:26.724 JPlayer[1907:707] プレイリストを表示する
2012-12-26 18:18:26.994 JPlayer[1907:707] 林檎

続編

次回は音楽プレイヤーを作ってアプリっぽくします。
【iOS】iPod Library Accessの使い方(2)簡易音楽プレイヤーを作る