トップ «前の日記(2013-05-06) 最新 次の日記(2013-05-18)» 編集

Cocoa練習帳

iOS/iPhone/iPad/watchOS/tvOS/MacOSX/Android プログラミング, Objective-C, Cocoa, Swiftなど

2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|

2013-05-07 [iOS]耳コピ用AudioPlayer(その6)

iPodアプリケーションのOn-The-GoインタフェースのArtistsでは、まず、Artistsのリストが表示され、あるArtistを選択するとAlbumsリストが表示され、あるAlbumを選択するのSongsリストが表示されるが、その為で情報を取得する方法を試行錯誤してみたので、それを紹介する。

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    /* Artists一覧の取得 */
    MPMediaQuery    *artistsQuery = [MPMediaQuery artistsQuery];
    NSArray         *artistsArray = [artistsQuery collections];
    for (MPMediaItemCollection *mediaItemCollection in artistsArray) {
        MPMediaItem *mediaItem = [mediaItemCollection representativeItem];
        NSURL   *artistName = (NSURL*)[mediaItem valueForProperty:MPMediaItemPropertyArtist];
        NSLog(@"artist:%@", artistName);
        
        /* Albums一覧の取得 */
        MPMediaQuery    *albumsQuery = [[MPMediaQuery alloc] init];
        [albumsQuery addFilterPredicate:[MPMediaPropertyPredicate predicateWithValue:artistName
                                                                        forProperty:MPMediaItemPropertyArtist]];
        [albumsQuery setGroupingType:MPMediaGroupingAlbum];
        NSArray *albums = [albumsQuery collections];
        for (MPMediaItemCollection *album in albums) {
            MPMediaItem *representativeItem = [album representativeItem];
            NSString *albumTitle = [representativeItem valueForProperty:MPMediaItemPropertyAlbumTitle];
            NSLog(@" album:%@", albumTitle);
            
            /* Songs一覧の取得 */
            NSArray *songs = [album items];
            for (MPMediaItem *song in songs) {
                NSString *songTitle = [song valueForProperty: MPMediaItemPropertyTitle];
                NSLog(@"  song:%@", songTitle);
            }
        }
    }
}

はじめArtists一覧は木構造になっていて、Albums、Songsと辿れると予想していたのだが、そうではなくて、得られた情報から検索条件を作って取得する事になる。

_ ソースコード

GitHubからどうぞ。
https://github.com/murakami/workbook/tree/master/ios/AudioPlayer - GitHub

_ 関連情報

iPhone Core Audioプログラミング
Technical Q&A QA1668Playing media while in the background using AV Foundation
iPod Library Access Programming Guide

_ 【Cocoa練習帳】

http://www.bitz.co.jp/weblog/
http://ameblo.jp/bitz/(ミラー・サイト)

トップ «前の日記(2013-05-06) 最新 次の日記(2013-05-18)» 編集