iPhone воспроизводит определенный плейлист / iMix - PullRequest
1 голос
/ 03 декабря 2009

Я хочу воспроизвести определенный список воспроизведения (который был создан как iMix) из моей программы, пока он существует. Я могу использовать

[[MPMediaQuery albumsQuery] addFilterPredicate:[MPMediaPropertyPredicate predicateWithValue:@"MyAlbum" forProperty:MPMediaItemPropertyAlbumTitle]]; 

, чтобы получить все песни в альбоме (а также множество других опций для артистов и т. Д.), Но, похоже, нет доступа к плейлистам.

Есть ли другой способ сделать это, или я буду вынужден хранить все песни в списке воспроизведения в моем коде и получать к ним доступ таким образом?

Ответы [ 2 ]

2 голосов
/ 04 декабря 2009

Я сам этим не пользовался, но в документах вижу [MPMediaQuery playlistsQuery] и MPMediaGroupingPlaylist ...

Помогает ли эта ссылка?

http://discussions.apple.com/thread.jspa?threadID=2084104&tstart=0&messageID=9838244

1 голос
/ 04 декабря 2009

Я закончил тем, что катал свой собственный через текстовый файл, который содержит информацию о плейлисте. вот код Функция [Globals split] просто берет строку и разбивает ее на массив строк, используя один символ ([Globals split: with:]) или каждый символ в строке ([Globals split: withMany:]).

//Create the music player for our application.
musicPlayer = [MPMusicPlayerController applicationMusicPlayer];
[musicPlayer setShuffleMode: MPMusicShuffleModeOff];
[musicPlayer setRepeatMode: MPMusicRepeatModeAll];

//Get our song list from the text file.
NSError *error = nil;
NSString *songList = [NSString stringWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Playlist" ofType:@"txt"] encoding:NSUTF8StringEncoding error:&error];

//Split it into each song using newlines or carriage returns.
NSArray *allSongs = [Globals split:songList withMany:@"\r\n"];
NSMutableArray *music = [NSMutableArray arrayWithCapacity:[allSongs count]];

for (int i = 0; i < [allSongs count]; i++)
{
    //Split the line into tab-delimited info: title, artist, album.
    NSArray *songInfo = [Globals split:[allSongs objectAtIndex:i] with:'\t'];

    //Get a query using all the data we have. This should return one song.
    MPMediaQuery *songQuery = [MPMediaQuery songsQuery];
    if ([songInfo count] > 0)
    {
        [songQuery addFilterPredicate:[MPMediaPropertyPredicate predicateWithValue:[songInfo objectAtIndex:0] forProperty:MPMediaItemPropertyTitle]];
    }
    if ([songInfo count] > 1)
    {
        [songQuery addFilterPredicate:[MPMediaPropertyPredicate predicateWithValue:[songInfo objectAtIndex:1] forProperty:MPMediaItemPropertyArtist]];
    }
    if ([songInfo count] > 2)
    {
        [songQuery addFilterPredicate:[MPMediaPropertyPredicate predicateWithValue:[songInfo objectAtIndex:2] forProperty:MPMediaItemPropertyAlbumTitle]];
    }

    //Add the song to our collection if we were able to find it.
    NSArray *matching = [songQuery items];
    if ([matching count] > 0)
    {
        [music addObject:[matching objectAtIndex:0]];
        printf("Added in: %s\n",[(NSString *)[(MPMediaItem *)[matching objectAtIndex:0] valueForProperty:MPMediaItemPropertyTitle] UTF8String]);
    }
    else
    {
        printf("Couldn't add in: %s\n",[(NSString *)[songInfo objectAtIndex:0] UTF8String]);
    }

}

//Now that we have a collection, make our playlist.
if  ([music count] > 0)
{
    itunesLoaded = YES;

    // just get the first album with this name (there should only be one)
    MPMediaItemCollection *itunesAlbum = [MPMediaItemCollection collectionWithItems:music];

    //Shuffle our songs.
    musicPlayer.shuffleMode = MPMusicShuffleModeSongs;

    [musicPlayer setQueueWithItemCollection: itunesAlbum];
}

Текстовый файл очень легко генерируется с помощью iTunes. Все, что вам нужно сделать, это создать свой плейлист в iTunes, удалить всю информацию о песне из вашего списка, кроме «Название», «Исполнитель» и «Альбом», выбрать все, а затем вставить в текстовый файл. Он будет автоматически разделен символами табуляции и разделен по возврату каретки. Вам также не нужно беспокоиться о опечатках или чем-то подобном.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...