ちょっとしたポイントを自分用メモ。
・iPhone内の楽曲の取得について。
iPhone内に入っている楽曲の取得は、簡易に行う場合MPMediaPickerを使用します。
感覚としてはImagePickerの使い方に近く、あまり考える事無く、別Viewが出て来て、選択した楽曲を送り返してくれます。
楽曲は曲単位でユニークなIDが付けられています。
固有なIDはMPMediaItemPropertyPersistentIDを取得すれば得られます。
MPMediaItem *mediaItem = [[collection items] objectAtIndex:0]; NSString *songid = [mediaItem valueForProperty:MPMediaItemPropertyPersistentID];//本命。そんでもって、IDから曲を呼ぶ方法なんですが、次の様な流れになります。
- MPMediaPropertyPredicateに検索したいパラメーターを渡す。(この場合、MPMediaItemPropertyPersistentID)
- ・MPMediaPropertyPredicateをaddFilterPredicate:の形で、MPMediaQuery に渡す。
- ・そうすると条件に合ったQueryがMPMediaQueryに渡ってくるので、これを再生する。
NSString* preId = @"XXXXXXXXXXXX"; //MPMediaItemPropertyPersistentIDを何らかの形で入れる。 MPMediaPropertyPredicate *songFromId =[MPMediaPropertyPredicate predicateWithValue:preId forProperty:MPMediaItemPropertyPersistentID]; MPMediaQuery *songQuery=[[MPMediaQuery alloc]init]; [songQuery addFilterPredicate:songFromId]; [musicPlayer setQueueWithQuery:songQuery]; [musicPlayer play];これで、指定した任意の楽曲を再生出来ると思います。
もっと効率がイイカンジのやり方(IDだからQueryで渡さんでも良くね?)とか思ってたんですが、このやり方だとAlbum単位での取得とかArtist単位での取得が容易です。
NSUserDefaultとかで保存しておくと、ID無いよって言われる可能性もあるんですが、その辺は未検証です。多分落ちる事はないかなあと。(一旦Queryに入れてるからね。)
ざっとこんな感じでした。さて仕事しよ。
0 件のコメント:
コメントを投稿