Tôi có đơn đăng ký của tôi hiển thị số MPMediaPickerController
. Tôi muốn lưu MediaItem
và bắt đầu phát lại khi khởi động. Tôi nghĩ điều này có thể thực hiện được bằng cách sử dụng MPMediaQuery
. Có vẻ như, tôi nên sử dụng MPMediaItemPropertyPersistentID
nhưng tôi không chắc chắn làm thế nào để truy vấn cho nó. Có suy nghĩ gì không?iPhone sdk, lưu MPMediaItemCollection?
6
A
Trả lời
11
Man, bạn không cần phải tiết kiệm mediaCollection. phương tiện truyền thông thu thập nó chỉ là mảng của các đối tượng MPMediaItem. Vì vậy, bạn nên lưu persistentIds của mặt hàng này. nó khá dễ dàng
//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];
}
6
này nên làm việc:
MPMediaQuery *query = [MPMediaQuery songsQuery];
MPMediaPropertyPredicate *predicate = [MPMediaPropertyPredicate predicateWithValue:myPersistentID forProperty:MPMediaItemPropertyPersistentID];
[query addFilterPredicate:predicate];
NSArray *songs = [query items];
helll yeah bạn đã giết nó !!! –
có cần thiết để bọc một MPMediaItem vào MPMediaItemCollection không? – surfrider