iPod の楽曲 メディアアイテムピッカーを利用してアプリ内から iPod ライブラリーを利用する方法 MediaPlayer iPhone開発 ios 逆引き サンプル
iPod の曲をアプリから呼び出して音楽を鳴らしたり曲名を利用したりする
基本的なサンプルを紹介します。
ヘッダに MediaPlayer を追加します。
#import <MediaPlayer/MediaPlayer.h>
インターフェースにて MPMediaPickerControllerDelegate のデリゲートを設定します。
@interface AudioTestViewController : UIViewController <MPMediaPickerControllerDelegate>
@end
続いて、MediaPlayer のライブラリーのパスを設定します。
プロジェクト → TARGETS → Build Phases を選択してMediaPlayer.framework を追加します。
MediaPlayer.framework がない場合は、
+ をクリックすると、下記が表示されますので、MediaPlayer.framework を選択してください。
今回は、サンプルなので viewDidLoad に実装しました。
– (void)viewDidLoad
{
[super viewDidLoad];
// initWithMediaTypes の引数は下記を参照に利用したいメディアを設定しましょう。
MPMediaPickerController *picker = [[MPMediaPickerController alloc] initWithMediaTypes: MPMediaTypeAnyAudio];
// initWithMediaTypes の タイプ一覧
// audio media types
// 音楽
// MPMediaTypeMusic
// ポッドキャスト
// MPMediaTypePodcast
// オーディオブック
// MPMediaTypeAudioBook
// 全てのオーディオ
// MPMediaTypeAnyAudio
// video media types
// 動画
// MPMediaTypeMovie
// テレビ
// MPMediaTypeTVShow
// 動画ポッドキャスト
// MPMediaTypeVideoPodcast
// ミュージックビデオ
// MPMediaTypeMusicVideo
// ビデオ ITunesU
// MPMediaTypeVideoITunesU
// 全てのビデオ
// MPMediaTypeAnyVideo
// generic media type
// 全てのメディア
// MPMediaTypeAny
// デリゲートを自分クラスに設定
[picker setDelegate: self];
// 複数のメディアを選択可能に設定
[picker setAllowsPickingMultipleItems: YES];
// プロンプトに表示する文言を設定
picker.prompt = NSLocalizedString (@”Add songs to play”,”Prompt in media item picker”);
// ViewController へピッカーを設定
[self presentModalViewController: picker animated: YES];
}
// デリゲートの設定 Done 押下時に呼ばれます。
– (void) mediaPicker: (MPMediaPickerController *) mediaPicker
didPickMediaItems: (MPMediaItemCollection *) collection
{
// 選択されたメディアは 配列で格納されている。
for (MPMediaItem *item in collection.items) {
// 選択されたメディアの属性を取得してログへ表示する。その他の属性に関しては下記に一覧があります。
NSLog(@”Title is %@”, [item valueForProperty:MPMediaItemPropertyTitle]);
NSLog(@”Artist is %@”, [item valueForProperty:MPMediaItemPropertyArtist]);
NSLog(@”AlbumTitle is %@”, [item valueForProperty:MPMediaItemPropertyAlbumTitle]);
}
[self dismissModalViewControllerAnimated:YES];
}
– (void) mediaPickerDidCancel: (MPMediaPickerController *) mediaPicker
{
[self dismissModalViewControllerAnimated: YES];
}
メディアの属性を取得するプロパティ一覧
MPMediaItemPropertyPersistentID
MPMediaItemPropertyAlbumPersistentID
MPMediaItemPropertyArtistPersistentID
MPMediaItemPropertyAlbumArtistPersistentID
MPMediaItemPropertyGenrePersistentID
MPMediaItemPropertyComposerPersistentID
MPMediaItemPropertyPodcastPersistentID
MPMediaItemPropertyMediaType
MPMediaItemPropertyTitle
MPMediaItemPropertyAlbumTitle
MPMediaItemPropertyArtist
MPMediaItemPropertyAlbumArtist
MPMediaItemPropertyGenre
MPMediaItemPropertyComposer
MPMediaItemPropertyPlaybackDuration
MPMediaItemPropertyAlbumTrackNumber
MPMediaItemPropertyAlbumTrackCount
MPMediaItemPropertyDiscNumber
MPMediaItemPropertyDiscCount
MPMediaItemPropertyArtwork
MPMediaItemPropertyLyrics
MPMediaItemPropertyIsCompilation
MPMediaItemPropertyReleaseDate
MPMediaItemPropertyBeatsPerMinute
MPMediaItemPropertyComments
MPMediaItemPropertyAssetURL
サンプル
- (void)viewDidLoad { [super viewDidLoad]; // initWithMediaTypes の引数は下記を参照に利用したいメディアを設定しましょう。 MPMediaPickerController *picker = [[MPMediaPickerController alloc] initWithMediaTypes: MPMediaTypeAnyAudio]; // initWithMediaTypes の タイプ一覧 // audio media types // 音楽 // MPMediaTypeMusic // ポッドキャスト // MPMediaTypePodcast // オーディオブック // MPMediaTypeAudioBook // 全てのオーディオ // MPMediaTypeAnyAudio // video media types // 動画 // MPMediaTypeMovie // テレビ // MPMediaTypeTVShow // 動画ポッドキャスト // MPMediaTypeVideoPodcast // ミュージックビデオ // MPMediaTypeMusicVideo // ビデオ ITunesU // MPMediaTypeVideoITunesU // 全てのビデオ // MPMediaTypeAnyVideo // generic media type // 全てのメディア // MPMediaTypeAny // デリゲートを自分クラスに設定 [picker setDelegate: self]; // 複数のメディアを選択可能に設定 [picker setAllowsPickingMultipleItems: YES]; // プロンプトに表示する文言を設定 picker.prompt = NSLocalizedString (@"Add songs to play","Prompt in media item picker"); // ViewController へピッカーを設定 [self presentModalViewController: picker animated: YES]; } // デリゲートの設定 Done 押下時に呼ばれます。 - (void) mediaPicker: (MPMediaPickerController *) mediaPicker didPickMediaItems: (MPMediaItemCollection *) collection { // 選択されたメディアは 配列で格納されている。 for (MPMediaItem *item in collection.items) { // 選択されたメディアの属性を取得してログへ表示する。その他の属性に関しては下記に一覧があります。 NSLog(@"Title is %@", [item valueForProperty:MPMediaItemPropertyTitle]); NSLog(@"Artist is %@", [item valueForProperty:MPMediaItemPropertyArtist]); NSLog(@"AlbumTitle is %@", [item valueForProperty:MPMediaItemPropertyAlbumTitle]); } [self dismissModalViewControllerAnimated:YES]; } - (void) mediaPickerDidCancel: (MPMediaPickerController *) mediaPicker { [self dismissModalViewControllerAnimated: YES]; }