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