刚开始学习ios开发,有很多知识点,与大家分享一下,同时也是一个总结,一个备份。
---------------------------------------------------------------------------------------------------------------------------------------------
使用MPMediaPickerController选择音乐
预备工作:
1.导入MediaPlayer框架
2.在需要进行选音乐的viewController.m中导入头文件:
#import <MediaPlayer/MediaPlayer.h>
3.在.m中添加代理:<MPMediaPickerControllerDelegate>
正式开始:
1. 确定你要进行选音乐的viewController,在.h中
//4个button的action,从上到下的功能:
//选择本地歌曲
//开始/暂停
//上一首
//下一首
- (IBAction)choose:(id)sender;
- (IBAction)pauseOrStart:(id)sender;
- (IBAction)skipToPrevious:(id)sender;
- (IBAction)skipToNext:(id)sender;
2.在.m中
<pre name="code" class="objc">//歌曲选择的
MPMediaPickerController *mpc;
//歌曲播放的
MPMusicPlayerController *musicPlayer;
//歌曲列表
MPMediaItemCollection *itemList;
}
- (void)viewDidLoad
{
[super viewDidLoad];
musicPlayer = [MPMusicPlayerController applicationMusicPlayer];
//初始化音乐选择Controller
mpc = [[MPMediaPickerController alloc] initWithMediaTypes:MPMediaTypeAnyAudio];
//设置代理
mpc.delegate = self;
//选歌界面的title文字
mpc.prompt = @"请选择喜欢的音乐";
//设置是否允许多选
mpc.allowsPickingMultipleItems = YES;
//设置是否允许选择云端音乐
mpc.showsCloudItems = YES;
}
//当用户在选歌界面选歌的时候
- (void)mediaPicker:(MPMediaPickerController *)mediaPicker didPickMediaItems:(MPMediaItemCollection *)mediaItemCollection
{
//保存用户选择的音乐列表
itemList = mediaItemCollection;
//将用户选择的音乐列表设置为musicPlayer的播放列表
[musicPlayer setQueueWithItemCollection:mediaItemCollection];
[mpc dismissViewControllerAnimated:YES completion:NULL];
//此为循环播放,到最后一首,再回到第一首
[musicPlayer setRepeatMode:MPMusicRepeatModeAll];
//设置将要播放的歌曲,此处为从所添加的第一首开始播放
musicPlayer.nowPlayingItem = [itemList.items objectAtIndex:0];
//开始播放
[musicPlayer play];
//从添加的第一首歌开始播放,之后会继续播放后面的
}
- (void)mediaPickerDidCancel:(MPMediaPickerController *)mediaPicker
{
NSLog(@"用户取消了选择");
}
/开始/暂停button被按下
- (IBAction)pauseOrStart:(id)sender {
if (musicPlayer.playbackState == MPMusicPlaybackStatePlaying) {
[musicPlayer pause];
}else{
//当没有导入歌曲时,播放列表为空,点此不管用。程序不会崩溃。
[musicPlayer play];
}
}
//上一首button被按下
- (IBAction)skipToPrevious:(id)sender {
[musicPlayer skipToPreviousItem];
}
//下一首button被按下
- (IBAction)skipToNext:(id)sender
{
[musicPlayer skipToNextItem];
}