伙计们 :) 您能否分享一些想法,如何从用户的 iPod 库中获取一个或多个随机 MPMediaItems。对 [MPMediaQuery songQuery].items 的任何调用都太慢了——对于只有 800 首歌曲的库,在我的 iPod Touch 2G 上执行查询大约需要 19 秒。我不想缓存整个 iPod 库,因为我认为这不值得。任何想法将不胜感激。谢谢 :)
问问题
1038 次
2 回答
1
您可以使用[MPMediaQuery albumsQuery]
随机获取一张专辑,然后尝试从该专辑中获取一首随机歌曲。
于 2010-12-12T08:39:24.463 回答
0
我编写了这个方法来从名为My Jukebox的 iPad 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;
}
于 2011-01-22T22:33:27.700 回答