伙计们:)你能否分享一些如何从用户的iPod库中获取一个或多个随机MPMediaItems的想法。对[MPMediaQuery songsQuery] .items的任何调用都太慢了 - 对于只有800首歌曲的库,我需要在iPod Touch 2G上执行查询大约需要19秒。我不想缓存整个iPod库,因为我不认为这是值得的。任何想法将不胜感激。谢谢:))
答案 0 :(得分:1)
您可以使用[MPMediaQuery albumsQuery]
获取随机相册,然后尝试从该相册中随机播放一首歌。
答案 1 :(得分:0)
我写了这个方法来从我的iPad Jukebox应用程序的音乐集中检索一个名为My Jukebox的随机曲目,希望你也可以使用它。它很快,即使在大型音乐集合上,如果你保留MediaQuery对象(将它存储为类的属性),那么第二次调用几乎是即时的。我希望它有所帮助。
-(MPMediaItem*) getRandomTrack
{
// Check if we can re-use an MPMediaQuery
if (self.mediaQuery == nil)
{
MPMediaQuery *everything = [[MPMediaQuery alloc] init];
[self setMediaQuery:everything];
[everything release];
}
// Get all Media Items into an Array (Fast)
NSArray *allTracks = [mediaQuery items];
// Check we have enough Tracks for a Random Choice
if ([allTracks count] < 20)
{
return nil;
}
// Pick Random Track
int trackNumber = arc4random() % [allTracks count];
MPMediaItem *item = [allTracks objectAtIndex:trackNumber];
// Display and Return
return item;
}