(2015年9月14日追記。
Swift版の記事を書きました。
[iOS][Swift]ミュージックライブラリにアクセスして音楽を再生する(MPMusicPlayerController使用) | nackpan Blog
ごらんください。)
今回は、ミュージックライブラリから音楽を選択すると音楽がスタートするようにし、再生、一時停止、停止ができるようにする。
Single View Applicationでプロジェクトを作成。名前はsampleMusicPlayerにしてみた。
MediaPlayerフレームワークを加える。 「+」ボタンを押すと、フレームワークがずらりと現れるので、そのなかから、MediaPlayer.frameworkを加える。 ViewController.hにMediaPlayerフレームワークをimportする。
ボタンとViewController.mにactionを作成してつなげる。
プレイヤーを表すpropertyをViewController.mに加える。
プレイヤーのインスタンスを作成。 (ここで、applicationMusicPlayerではなく、ipodMusicPlayerを用いると、「ミュージック」での再生状況(再生アイテムや、シャッフル、リピートなどのモード)を反映したものになる)
曲を選択するために、メディアアイテムピッカーを用いる。
(メディアアイテムピッカーというのは、iOSで用意されているあらかじめ設定済みのModalViewController。ミュージックライブラリの選択画面と同じようなことが出来る)
(iPodライブラリアクセスプログラミングガイドより)
メディアアイテムピッカーでの「選択完了したとき」や「キャンセルされたとき」のイベントを、ViewControllerで受け取れるようにする。
そのために、ViewControllerをメディアアイテムピッカーのデリゲートとして設定する。
「選曲」ボタンを押すと、メディアアイテムピッカーを作成して、デリゲートの設定を行い、ライブラリの曲を選択できるようにする。
「選択完了したとき」「キャンセルされたとき」のメソッドを記述する。 ViewController.h ViewController.m
各ボタンのアクションに、「再生」「一時停止」「停止」機能を加える。
iOSシミュレータでは動作しません。実機を用いてください。 「選曲」ボタンを押すと、メディアアイテムピッカーが表示され、曲を選択すると音楽がスタートします。「再生」ボタンで音楽の再生。「一時停止」ボタンで一時停止。「停止」ボタンで音楽を止めて、再生位置を一番始めに戻します。
ViewController.h
// // ViewController.h // sampleMusicPlayer // #import <UIKit/UIKit.h> #import <MediaPlayer/MediaPlayer.h> @interface ViewController : UIViewController<MPMediaPickerControllerDelegate> @end
ViewController.m
// // ViewController.m // sampleMusicPlayer // #import "ViewController.h" @interface ViewController () @property MPMusicPlayerController* player; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. self.player = [MPMusicPlayerController applicationMusicPlayer]; } - (IBAction)pick:(id)sender { // MPMediaPickerControllerのインスタンスを作成 MPMediaPickerController *picker = [[MPMediaPickerController alloc]init]; // ピッカーのデリゲートを設定 picker.delegate = self; // 複数選択を不可にする。(YESにすると、複数選択できる) picker.allowsPickingMultipleItems = NO; // ピッカーを表示する [self presentViewController:picker animated:YES completion:nil]; } // メディアアイテムピッカーでアイテムを選択完了したときに呼び出される - (void)mediaPicker:(MPMediaPickerController *)mediaPicker didPickMediaItems:(MPMediaItemCollection *)mediaItemCollection { // 選択した曲情報がmediaItemCollectionに入っているので、これをplayerにセット。 [self.player setQueueWithItemCollection:mediaItemCollection]; // 再生開始 [self.player play]; // ピッカーを閉じ、破棄する [mediaPicker dismissViewControllerAnimated:YES completion:nil]; } //選択がキャンセルされた場合に呼ばれる - (void)mediaPickerDidCancel:(MPMediaPickerController *)mediaPicker{ // ピッカーを閉じ、破棄する [mediaPicker dismissViewControllerAnimated:YES completion:nil]; } - (IBAction)pushPlay:(id)sender { [self.player play]; } - (IBAction)pushPause:(id)sender { [self.player pause]; } - (IBAction)pushStop:(id)sender { [self.player stop]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end
関連記事
[iOS]AVPlayerを使う | nackpan Blog AVFoundationフレームワークのAVPlayerクラスを使って、ミュージックライブラリの楽曲を再生する。
yukudekiteimasu