版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。
布局如下:

引入架構:
#import <avfoundation/avfoundation.h>
#import <mediaplayer/mediaplayer.h>
遵循協定及引入頭檔案
#import "viewcontroller.h"
#import <avfoundation/avfoundation.h>
#import <mediaplayer/mediaplayer.h>
@interface viewcontroller ()<mpmediapickercontrollerdelegate>
@end
@implementation viewcontroller
點選事件:
- (ibaction)pickmusicaction:(uibutton *)sender {
//建立一個mpmediapickercontroller 并為其指定媒體類型
//媒體類型:包括音樂,音頻等
//mpmediatypemovie
//mpmediatypemusic
mpmediapickercontroller *mediapc = [[mpmediapickercontroller alloc]initwithmediatypes:(mpmediatypemusic)];
if (mediapc != nil) {
nslog(@"successfully instantiated a media picker");
// 設定相關的屬性
// 代理
mediapc.delegate = self;
// 提示文字
mediapc.prompt = @"請選擇要播放的音樂";
// 是否允許一次選擇多個
mediapc.allowspickingmultipleitems = yes;
[self presentviewcontroller:mediapc animated:yes completion:nil];
}else{
nslog(@"could not instantiate a media picker");
}
}
// 通過代理方法來擷取選中的歌曲
// mpmediaitemcollection 多媒體項集合
// mpmediaitem 單個多媒體項,如一首歌曲
// collection是一組有序的item集合
- (void)mediapicker:(mpmediapickercontroller *)mediapicker didpickmediaitems:(mpmediaitemcollection *)mediaitemcollection
{
nslog(@"%@",mediaitemcollection);
//mpmusicplayercontroller類可以播放音樂庫中的音樂
//mpmusicplayercontroller提供兩種播放器類型,一種是applicationmusicplayer,一種是ipodmusicplayer,這裡用ipodmusicplayer。前者在應用退出後音樂播放會自動停止,後者在應用停止後不會退出播放狀态。
mpmusicplayercontroller *musicpc = [[mpmusicplayercontroller alloc]init];
//mpmusicplayercontroller加載音樂不同于前面的avaudioplayer,avaudioplayer是通過一個檔案路徑來加載,而mpmusicplayercontroller需要一個播放隊列,正是由于它的播放音頻來源是一個隊列,是以mpmusicplayercontroller支援上一曲、下一曲等操作。
[musicpc setqueuewithitemcollection:mediaitemcollection];
[musicpc play];
//選中後取消動作
- (void)mediapickerdidcancel:(mpmediapickercontroller *)mediapicker
nslog(@"media picker was cancelled");
[mediapicker dismissviewcontrolleranimated:yes completion:nil];
最終效果:
原文位址:http://blog.csdn.net/qq_31810357/article/details/50008255