皆さん :) ユーザーの iPod ライブラリから 1 つまたは複数のランダムな MPMediaItem を取得する方法について、いくつかのアイデアを教えてください。[MPMediaQuery songQuery].items への呼び出しは遅すぎます。わずか 800 曲のライブラリの場合、私の iPod Touch 2G でクエリを実行するのに約 19 秒かかります。私は iPod ライブラリ全体をキャッシュしたくありません。なぜなら、それは努力する価値がないと思うからです。どんな考えでも大歓迎です。ありがとうございました :)
1038 次
2 に答える
1
を使用[MPMediaQuery albumsQuery]
してランダムなアルバムを取得し、そのアルバムからランダムな曲を取得してみてください。
于 2010-12-12T08:39:24.463 に答える
0
このメソッドを作成して、iPadJukeboxアプリケーションの音楽コレクションからMyJukeboxというランダムなトラックを取得しました。これも使用できるといいのですが。大きな音楽コレクションでも高速で、MediaQueryオブジェクトを保持している(クラスのプロパティとして保存している)場合、2番目の呼び出しはほぼ瞬時に行われます。お役に立てば幸いです。
-(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 に答える