iPhoneに入っている曲の中からタイトルを指定して再生する方法がわかったので掲載。
楽しいなあもう。
MPMediaQueryクラスの使い方がいまいちよくわかってないのですが、マッチしたコレクションを返すのかな?
んで、プレーヤはそれをひたすらイテレートする??よくわからない。
iPhoneOS3.1とSDK3.1で動作確認。基本はここに載っているチュートリアルを参考にしながら、クエリの出し方をここで習いました。
チュートリアルは英文ですが、
- Window-based Application でひな形つくって
- MusicPlayerFramework を足して(トラップがあるので、最下部参照)
- hogehogeAppDelegate.h に #import
書いて - サンプルコードを 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 Journeyがipodライブラリにないと無理ですが。
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
にあるそうです。