アプリケーションにMPMediaPickerController
. MediaItem
を保存して、起動時に再生を再開したいと思います。を使えば可能だと思いますMPMediaQuery
。を使用する必要があるようMPMediaItemPropertyPersistentID
ですが、クエリの方法がわかりません。何かご意見は?
質問する
4233 次
2 に答える
11
男、メディアコレクションを保存する必要はありません。メディア コレクションです。MPMediaItem オブジェクトの単なる配列です。したがって、このアイテムのpersistentIdsを保存することをお勧めします。とても簡単です
//it's how to know persistentId of the song after you got mediaItemCollection from your mediaPickerViewController
//then you can sav it in userDefaults.
- (NSNumber *)getPersistentId :(MPMediaItemCollection *)collection atIndex:(int)index {
MPMediaItem *mediaItem = [collection.items objectAtIndex:index];
NSNumber *anId = [mediaItem valueForProperty:MPMediaItemPropertyPersistentID];
return anId;
}
//when your application will be launched next time you can get required song:
- (void)obtainSongWitId:(NSNumber *)persistentId {
MPMediaQuery *query = [MPMediaQuery songsQuery];
MPMediaPropertyPredicate *predicate = [MPMediaPropertyPredicate predicateWithValue:persistentId forProperty:MPMediaItemPropertyPersistentID];
[query addFilterPredicate:predicate];
NSArray *mediaItems = [query items];
//this array will consist of song with given persistentId. add it to collection and play it
MPMediaItemCollection *col = [[MPMediaItemCollection alloc] initWithItems:mediaItems];
///....
[col release];
}
于 2010-11-19T13:49:01.637 に答える
6
これはうまくいくはずです:
MPMediaQuery *query = [MPMediaQuery songsQuery];
MPMediaPropertyPredicate *predicate = [MPMediaPropertyPredicate predicateWithValue:myPersistentID forProperty:MPMediaItemPropertyPersistentID];
[query addFilterPredicate:predicate];
NSArray *songs = [query items];
于 2009-11-19T16:43:29.933 に答える