使用MediaPlayer框架实现简单音乐播放器-陈棚
该项目需要使用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框架实现简单音乐播放器-陈棚的更多相关文章
- Android——简单音乐播放器
使用MediaPlayer做的简单音乐播放器,更多内容请到百度经验查看 http://jingyan.baidu.com/article/60ccbceb63452364cab197f1.html ...
- Android实现简单音乐播放器(MediaPlayer)
Android实现简单音乐播放器(MediaPlayer) 开发工具:Andorid Studio 1.3 运行环境:Android 4.4 KitKat 工程内容 实现一个简单的音乐播放器,要求功能 ...
- Android 实现简单音乐播放器(二)
在Android 实现简单音乐播放器(一)中,我介绍了MusicPlayer的页面设计. 现在,我简单总结一些功能实现过程中的要点和有趣的细节,结合MainActivity.java代码进行说明(写出 ...
- Android 实现简单音乐播放器(一)
今天掐指一算,学习Android长达近两个月了,今天开始,对过去一段时间的学习收获以及遇到的疑难杂症做一些总结. 简单音乐播放器是我自己完成的第一个功能较为完整的APP,可以说是我的Android学习 ...
- iOS之基于FreeStreamer的简单音乐播放器(模仿QQ音乐)
代码地址如下:http://www.demodashi.com/demo/11944.html 天道酬勤 前言 作为一名iOS开发者,每当使用APP的时候,总难免会情不自禁的去想想,这个怎么做的?该怎 ...
- Android实现简单音乐播放器(startService和bindService后台运行程序)
Android实现简单音乐播放器(MediaPlayer) 开发工具:Andorid Studio 1.3运行环境:Android 4.4 KitKat 工程内容 实现一个简单的音乐播放器,要求功能有 ...
- html5 简单音乐播放器
html5 简单音乐播放器 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> < ...
- Android开发学习之路--MediaPlayer之简单音乐播放器初体验
很多时候我们都会用手机来播放音乐,播放视频,那么具体地要怎么实现呢,其实主要是MediaPlayer类来完成的.下面通过简单的例子来实现一首歌曲的播放吧.新建工程MediaPlayerStudy,这里 ...
- Android开发6:Service的使用(简单音乐播放器的实现)
前言 啦啦啦~各位好久不见啦~博主最近比较忙,而且最近一次实验也是刚刚结束~ 好了不废话了,直接进入我们这次的内容~ 在这篇博文里我们将学习Service(服务)的相关知识,学会使用 Service ...
随机推荐
- Java初学者作业——定义一个计算器类, 实现计算器类中加、 减、 乘、 除的运算方法, 每个方法能够接收2个参数。
返回本章节 返回作业目录 需求说明: 定义一个计算器类, 实现计算器类中加. 减. 乘. 除的运算方法, 每个方法能够接收2个参数. 实现思路: 定义计算器类. 定义计算器类中加.减.乘.除的方法. ...
- mysql语句2-单表查询
mysql 查询以及多表查询 以下所有表格样例都采用下边这个表格 mysql> select * from benet; +------+------+----------+ | id | ...
- python的赋值、浅拷贝和深拷贝
""" 一.赋值在python中就是简单的对象引用 """ list_a = ["aaa", "bbb&quo ...
- centos7 安装zabbix3.0 安装zabbix4.0 yum安装zabbix 国内源安装zabbix 阿里云服务器安装zabbix
首先,此篇文章是有原因的. 刚开始也和大家一样来学习安装zabbix 奈何网上的教程和现实出现不一样的情况 在安装zabbix过程中,因为zabbix下载源是在国外,下载途中会出现终止下载的情况 tr ...
- Mysql高性能优化
一.背景 最近公司项目添加新功能,上线后发现有些功能的列表查询时间很久.原因是新功能用到旧功能的接口,而这些旧接口的 SQL 查询语句关联5,6张表且编写不够规范,导致 MySQL 在执行 SQL 语 ...
- 聊聊dubbo协议
搜索关注微信公众号"捉虫大师",后端技术分享,架构设计.性能优化.源码阅读.问题排查.踩坑实践. 协议 协议通俗易懂地解释就是通信双方需要遵循的约定. 我们了解的常见的网络传输协议 ...
- 校招面试之——Java容器
最近校招季,特把自己面试中遇到的问题整理整理,以巩固自己的知识. Java中对于容器有两大类存储方式,一种是单元素存放,还有一种就是key-value这种有关联的双元素存放了.对于Java中的容器,有 ...
- 《剑指offer》面试题15. 二进制中1的个数
问题描述 请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数.例如,把 9 表示成二进制是 1001,有 2 位是 1.因此,如果输入 9,则该函数输出 2. 示例 1: 输入:00000 ...
- 《剑指offer》面试题53 - I. 在排序数组中查找数字 I
问题描述 统计一个数字在排序数组中出现的次数. 示例 1: 输入: nums = [5,7,7,8,8,10], target = 8 输出: 2 示例 2: 输入: nums = [5,7,7,8, ...
- vue学习16-插槽的使用
<!DOCTYPE html> <html lang='en'> <head> <meta charset='UTF-8'> <meta ht ...