1

皆さん :) ユーザーの iPod ライブラリから 1 つまたは複数のランダムな MPMediaItem を取得する方法について、いくつかのアイデアを教えてください。[MPMediaQuery songQuery].items への呼び出しは遅すぎます。わずか 800 曲のライブラリの場合、私の iPod Touch 2G でクエリを実行するのに約 19 秒かかります。私は iPod ライブラリ全体をキャッシュしたくありません。なぜなら、それは努力する価値がないと思うからです。どんな考えでも大歓迎です。ありがとうございました :)

4

2 に答える 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 に答える