布局如下:
引入框架:
#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://weibo.com/hanjunqiang 新浪微博