我让我的应用程序显示一个MPMediaPickerController。我想保存MediaItem并在启动时重新开始播放。我认为使用MPMediaQuery可以做到这一点。似乎,我应该使用MPMediaItemPropertyPersistentID,但我不确定如何查询它。有什么想法吗?
发布于 2010-11-19 21:49:02
伙计,你不需要救mediaCollection。媒体收藏它只是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];
}发布于 2009-11-20 00:43:30
这应该是可行的:
MPMediaQuery *query = [MPMediaQuery songsQuery];
MPMediaPropertyPredicate *predicate = [MPMediaPropertyPredicate predicateWithValue:myPersistentID forProperty:MPMediaItemPropertyPersistentID];
[query addFilterPredicate:predicate];
NSArray *songs = [query items];https://stackoverflow.com/questions/1745739
复制相似问题