Playerが表示するiPod Library画面の呼び出し方法です。
SimulatorではiPod Libraryにアクセスできないため、実機を接続する必要があります。
iPhone simulatorで実行すると次のエラーでクラッシュします。
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Unable to load iPodUI.framework'
MediaPlayer.framework追加
.hファイル
#import <MediaPlayer/MediaPlayer.h>
@interface MyViewController : UIViewController <MPMediaPickerControllerDelegate>
- (IBAction)someMethod:(id)sender;
@end
.mファイル
@implementation MyViewController
//MPMediaPickerController呼び出し.
- (IBAction)showLibrary:(id)sender {
MPMediaPickerController *picker = [[MPMediaPickerController alloc] initWithMediaTypes: MPMediaTypeAnyAudio];
[picker setDelegate: self];
//複数選択を許す場合YES、一曲のみ選択の場合NO
//複数選択を許す場合YES、一曲のみ選択の場合NO
[picker setAllowsPickingMultipleItems: YES];
[self presentModalViewController:picker animated: YES];
}
//Pickerの[Cancel]ボタンタップ.
- (void)mediaPickerDidCancel: (MPMediaPickerController *)mediaPicker
{
// モーダルビュー解除.
}
//Pickerの[Done]ボタンタップ.
- (void)mediaPicker:(MPMediaPickerController *)mediaPicker
didPickMediaItems:(MPMediaItemCollection *)collection
{
[self dismissModalViewControllerAnimated: YES];
[self dismissModalViewControllerAnimated: YES];
[self doSomethingWithCollection: collection];
}
//collectionを使った処理
- (void)doSomethingWithCollection:(MPMediaItemCollection *)collection
{
//MusicPlayer作成
MPMusicPlayerController* musicPlayer = [MPMusicPlayerController iPodMusicPlayer];
//collectionをセット
[musicPlayer setQueueWithItemCollection: collection];
//演奏開始
[musicPlayer play];
}
//曲名等の取得
MPMediaItem * mediaItem = [[collection items] objectAtIndex:index];
[mediaItem valueForProperty:MPMediaItemPropertyArtist];
[mediaItem valueForProperty:MPMediaItemPropertyAlbumTitle];
[mediaItem valueForProperty:MPMediaItemPropertyTitle];
//歌詞の取得
[mediaItem valueForProperty: MPMediaItemPropertyLyrics];
ただし、MPMediaItemの場合はPlayerで一度再生した曲でないと歌詞データが取得できない(Xcode 4.3.2)。AVAssetからは取得できる。
AVFoundation.framework追加
AVFoundation.framework追加
#import <AVFoundation/AVFoundation.h>
NSURL *url = [mediaItem valueForProperty:MPMediaItemPropertyAssetURL];
AVAsset *asset = [AVAsset assetWithURL:url];
NSString *lyrics = asset.lyrics;
参考:iPodライブラリアクセスプログラミングガイド
0 件のコメント:
コメントを投稿