2012-07-18 4 views
4

Я хочу выбрать песни из библиотеки ipod и воспроизвести ее с помощью avplayer. Я хочу, чтобы музыка продолжалась, даже после того, как приложение переходит в фоновый режим. Я новичок в программировании на iOS. Кто-нибудь может мне помочь вне ..Как получить песни из ipodlibrary и играть с помощью AVPlayer

Благодаря

+4

И я хочу, чтобы на Гавайях был весь дорогой месячный отпуск :) –

+0

С другой стороны, задан вопрос - кто-то получил ответ –

+0

Я работал над классом mpmusicplayercontroller ... но он не поддерживает фоновый режим , я слышал, что avplayer поддерживает фоновое воспроизведение – coded

ответ

7

чтобы разрешить пользователю выбрать песню (или песни) из своей музыкальной библиотеки, использовать MPMediaPickerController класс.

-(void) pickSong { 

    // Create picker view 
    MPMediaPickerController* picker = [[MPMediaPickerController alloc] init]; 
    picker.delegate = self; 

    // Check how to display 
    if ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad) { 

     // Show in popover 
     [popover dismissPopoverAnimated:YES]; 
     popover = [[UIPopoverController alloc] initWithContentViewController:picker]; 
     [popover presentPopoverFromBarButtonItem:self.navigationItem.rightBarButtonItem permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 

    } else { 

     // Present modally 
     [self presentViewController:picker animated:YES completion:nil]; 

    } 

} 

Изменить self.navigationItem.rightBarButtonItem если вы не показывать его с помощью кнопки на правой стороне строки заголовка.

Тогда вы должны слушать результата от реализации делегата:

Вызывается, когда пользователь отменил выбор:

-(void) mediaPickerDidCancel:(MPMediaPickerController *)mediaPicker { 

    // Dismiss selection view 
    [self dismissViewControllerAnimated:YES completion:nil]; 
    [popover dismissPopoverAnimated:YES]; 
    popover = nil; 

} 

Вызывается, когда пользователь выбрал что-то:

-(void) mediaPicker:(MPMediaPickerController *)mediaPicker didPickMediaItems:(MPMediaItemCollection *)mediaItemCollection { 

    // Dismiss selection view 
    [self dismissViewControllerAnimated:YES completion:nil]; 
    [popover dismissPopoverAnimated:YES]; 
    popover = nil; 

    // Get AVAsset 
    NSURL* assetUrl = [mediaItemCollection.representativeItem valueForProperty:MPMediaItemPropertyAssetURL]; 
    AVURLAsset* asset = [AVURLAsset URLAssetWithURL:assetUrl options:nil]; 

    // Create player item 
    AVPlayerItem* playerItem = [AVPlayerItem playerItemWithAsset:asset]; 

    // Play it 
    AVPlayer* myPlayer = [AVPlayer playerWithPlayerItem:playerItem]; 
    [myPlayer play]; 

} 

Вам понадобится UIPopoverController* popover; в вашей группе ss .h файл. Также вы должны сохранить myPlayer где-то ...

Чтобы музыка продолжалась в фоновом режиме, добавьте строку audio в массив в Info.plist под ключом UIBackgroundModes.

+0

Спасибо, что это сработало как шарм – coded

Смежные вопросы