版权声明:本文为博主原创文章,未经博主允许不得转载。
布局如下:
引入框架:
#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