码迷,mamicode.com
首页 > 其他好文 > 详细

使用MediaPlayer框架实现简单音乐播放器-陈棚

时间:2015-05-09 14:47:51      阅读:104      评论:0      收藏:0      [点我收藏+]

标签:

该项目需要使用MediaPlayer框架,因此程序需要先为该项目添加MediaPalyer框架,并在上面控制器类的实现部分使用#import<MediaPlayer/MediaPlayer.h>导入该框架的头文件

程序清单:

@interface FKViewController ()<MPMediaPickerControllerDelegate>{
    MPMediaPickerController* mpc;
    MPMusicPlayerController* musicPlayer;
    MPMediaItemCollection * itemList;
}

@end

@implementation FKViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    NSArray * paths = NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES);
    NSLog(@"path=%@",paths[0]);
    UIBarButtonItem * bn = [[UIBarButtonItem alloc]initWithTitle:@"选择音乐" style:UIBarButtonItemStylePlain target:self action:@selector(choose:)];
    self.navigationItem.rightBarButtonItem = bn;
    //创建音乐播放器
    musicPlayer = [MPMusicPlayerController systemMusicPlayer];
    //创建mpmediapickercontroller 对象
    mpc = [[MPMediaPickerController alloc]initWithMediaTypes:MPMediaTypeAnyAudio];
    //创建mpMediapickercontroller设置委托
    mpc.delegate = self;
    //设置选择音乐的提示文字
    mpc.prompt = @"请选择您喜欢的音乐";
    
    
    //设置是否允许多选
    mpc.allowsPickingMultipleItems = YES;
    //设置是否允许选择云端音乐
    mpc.showsCloudItems = YES;
    
   
}
-(void)choose:(id)sender{
//必须以modal方式显示mpmusicplayercontroller视图控制器
    [self presentViewController:mpc animated:YES completion:nil];

}
//当用户选择指定音乐时激发该方法,mediaItemcolllection代表用户选择的音乐
-(void)mediaPicker:(MPMediaPickerController *)mediaPicker didPickMediaItems:(MPMediaItemCollection *)mediaItemCollection{
//保存用户选择的音乐列表
    itemList = mediaItemCollection;
//将用户选择的音乐列表设置为musicplayer的播放列表
    [musicPlayer setQueueWithItemCollection:mediaItemCollection];
    [self.tableView reloadData];
    [mpc dismissViewControllerAnimated:YES completion:nil];
    
}
-(void)mediaPickerDidCancel:(MPMediaPickerController *)mediaPicker{
    NSLog(@"用户取消了选择");
    [mpc dismissViewControllerAnimated:YES completion:nil];
    
}
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

#pragma mark UITableViewDAtaSource和UITableViewDatagate的代理方法
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return itemList.count;
    
}
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
     return 1;
}
-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    NSUInteger rowNo = indexPath.row;
    static NSString * cellId = @"cellId";
    UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:cellId];
    if (!cell) {
        cell = [[UITableViewCell alloc]initWithStyle:0 reuseIdentifier:cellId];
    }
    cell.textLabel.text = [itemList.items[rowNo] valueForKeyPath:MPMediaItemPropertyTitle];
    return cell;
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    //获取表格行的行号
    NSUInteger rowNo = indexPath.row;
    //设置播放器正要播放的音乐
    musicPlayer.nowPlayingItem = [itemList.items objectAtIndex:rowNo];
    //开始播放
    [musicPlayer play];
}
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
    
    return 44;
}

 上面程序中的第1行粗体字代码创建了MPMusicPlayerController对象,该对象将会复制播放音乐,接下来程序创建了MPMediaPixkerController对象,并为该对象设置了相应的属性,该对象将负责选择音乐.

上面的视图控制器类实现了MPMediaPickerControllerDelegate协议,并实现了该协议中的两个方法,尤其是mediaPicker:idPickMediaItems:方法,当用户选择多首音乐时将会激发该方法.该方法保存了用户选择的多首音乐,并将用户选择的音乐作为MPMusicPlayerController的播放列表.该程序还实现了UITableViewDAtaSource和UITableViewDatagate的方法,这样即可通过表格显示用户选的音乐,并控制用户选择指定表格行时播放响应的音乐.

使用MediaPlayer框架实现简单音乐播放器-陈棚

标签:

原文地址:http://www.cnblogs.com/sixindev/p/4489853.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!