Как воспроизвести музыкальный файл после получения списка песен из музыкальной библиотеки? - PullRequest
3 голосов
/ 23 августа 2011

В моем приложении я должен сделать музыкальную библиотеку. Так что для этого я должен получить песни из музыкальной библиотеки. Я сделал до этого пока следующие.

Test_MusicLibraryAppDelegate *appDeleg = (Test_MusicLibraryAppDelegate *)[[UIApplication sharedApplication]delegate];

    //NSMutableDictionary *musicList = [NSMutableDictionary dictionary]; 

    MPMediaQuery *query = [[MPMediaQuery alloc] init];
    [query addFilterPredicate:[MPMediaPropertyPredicate
                               predicateWithValue:[NSNumber numberWithInteger:(MPMediaTypeMusic)]
                               forProperty:MPMediaItemPropertyMediaType]];

    for (MPMediaItem* item in [query items]) { 
        [appDeleg.arryMusic addObject:item];
    }

    NSLog(@"Count :: %d ",[appDeleg.arryMusic count]);
    [query release];

, чем отображать его в табличном представлении.

когда мне нужно воспроизвести песню по выбранному индексу, я получаю название песни, но не знаю, как ее воспроизвести,

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    Test_MusicLibraryAppDelegate *appDeleg = (Test_MusicLibraryAppDelegate *)[[UIApplication sharedApplication]delegate];

//      MPMediaItem *song = [appDeleg.arryMusic objectAtIndex:indexPath.row];

    NSURL *aURL = [appDeleg.arryMusic objectAtIndex:indexPath.row];
    //[song valueForProperty:MPMediaItemPropertyAssetURL];
    [[self avPlayer] replaceCurrentItemWithPlayerItem:
     [AVPlayerItem playerItemWithURL:aURL]];
    [avPlayer play];
}

но мой звуковой файл не воспроизводится ...

Эй, кто-нибудь знает об этом, чем помочь мне ..

Спасибо * AJPatel 1013 *

Ответы [ 2 ]

6 голосов
/ 23 августа 2011

Вы не сохраняете URL-адрес в своем массиве, вы храните экземпляры MPMediaItem

Что вам нужно сделать, это извлечь URL-адрес ресурсов из элемента мультимедиа.Вы можете сделать это следующим образом ...

MPMediaItem *item = [appDeleg.arryMusic objectAtIndex:indexPath.row];
NSURL *url = [item valueForProperty:MPMediaItemPropertyAssetURL];
[[self avPlayer] replaceCurrentItemWithPlayerItem:[AVPlayerItem playerItemWithURL:url]];
[self.avPlayer play];
0 голосов
/ 23 августа 2011

Вы должны инициализировать объект игрока (appdelegate будет хорошей позицией)

        MPMusicPlayerController *musicPlayer; //in .h file
  self.musicPlayer = [MPMusicPlayerController iPodMusicPlayer];
 [self.musicPlayer setRepeatMode:MPMusicRepeatModeNone];
 [self.musicPlayer setShuffleMode:MPMusicShuffleModeOff];
 [self.musicPlayer beginGeneratingPlaybackNotifications];

Затем необходимо сохранить массив для хранения медиа-элементов

MPMediaItemCollection * userMediaItemCollection; // в .h файле @property (nonatomic, retain) MPMediaItemCollection * userMediaItemCollection; // в .h файле

Вы должны добавить свой медиа-элемент в массив (список ввода) и добавить его в список медиаколлекции

[self setUserMediaItemCollection: [MPMediaItemCollection collectionWithItems: (NSArray *) inputList]];

Добавить список медиаколлекции в плеер

[APP_DELEGATE.musicPlayer setQueueWithItemCollection: self.userMediaItemCollection];

Сейчас играю

[APP_DELEGATE.musicPlayer play];
...