>& STDOUT

主にソフトウェアに関する日々の標準出力+標準エラー出力

iPhoneSDKのMediaPlayerFrameworkでipodライブラリの任意のタイトルの曲を流す

iPhoneに入っている曲の中からタイトルを指定して再生する方法がわかったので掲載。
楽しいなあもう。


MPMediaQueryクラスの使い方がいまいちよくわかってないのですが、マッチしたコレクションを返すのかな?
んで、プレーヤはそれをひたすらイテレートする??よくわからない。


iPhoneOS3.1とSDK3.1で動作確認。基本はここに載っているチュートリアルを参考にしながら、クエリの出し方をここで習いました。


チュートリアルは英文ですが、

  1. Window-based Application でひな形つくって
  2. MusicPlayerFramework を足して(トラップがあるので、最下部参照)
  3. hogehogeAppDelegate.h に #import 書いて
  4. サンプルコードを hogehogeAppDelegate.m にコピペしてちょ

というだけのものです。

- (void)applicationDidFinishLaunching:(UIApplication *)application {    

    // Override point for customization after application launch
    [window makeKeyAndVisible];
	
	// instantiate a music player
	MPMusicPlayerController *myPlayer = [MPMusicPlayerController applicationMusicPlayer];
	
	//search by title
	MPMediaQuery *query = [[MPMediaQuery alloc] init];
	
	query.groupingType = MPMediaGroupingTitle; 
	[query addFilterPredicate:
	    [MPMediaPropertyPredicate predicateWithValue: @"希望の帆を掲げ" 
	        forProperty: MPMediaItemPropertyTitle]];
	
	[myPlayer setQueueWithQuery: query];
	
	// start playing from the beginning of the queue
	[myPlayer play];	

}

とするとタイトル名からマッチする楽曲が掛かります。
もちろん(上記の例では)Switched-On Journeyipodライブラリにないと無理ですが。

MediaPlayerFrameworkが普通に無い件

Apple謹製のチュートリアルには

add the MediaPlayer framework to the Frameworks group. Save the project.


と書いてあるのですが、これが普通にSDK3.1のIDEから[追加]ってやると出てくる一覧に無いので、
Google先生に問い合わせてみたところ、こちらに同様の症状で困っている方が。

/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.0.sdk/System/Library/Frameworks


にあるそうです。