iOS开发:音乐播放器
2015-09-27 13:33
435 查看
/****************** iOS开发:音乐播放器 *****************/
要求:给button一个触发事件,点击一下播放歌曲,显示暂停提示;
再点击一下暂停歌曲,显示播放字体;
封装一个music类:
(1).引入AVFoundation框架
#import<AVFoundation/AVFoundation.h>
(2).创建播放歌曲的类的对象以及方法:
@property(nonatomic, strong)AVPlayer *player;
@property(nonatomic, retain)NSString *currentURL; //url:网络接口
@property(nonatomic,assign)NSInteger
flag; //标签
//单例,只有这个工程关闭时,才退出歌曲播放
+ (Music *)shareInstance;
//播放歌曲,传进来一个URL
- (void)playMusicWith:(NSString *)urlString;
//暂停歌曲
- (void)pauseMusic;
(3).实现方法:
+ (Music *)shareInstance{
//只走一次
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
music = [[Music alloc]init];
});
return music;
}
- (void)playMusicWith:(NSString *)urlString{
if ([_currentURL isEqualToString:urlString]) {
//通过flag触发播放还是暂停:
if (_flag == 1) {
[_player play];
_flag = 0;
}else{
[_player pause];
_flag = 1;
}else{ //换歌
//记录当前歌曲URL
_currentURL = urlString;
//先暂停前一首歌
[_player pause];
//得到新的URL
_player = [[AVPlayer alloc]initWithURL:[NSURL URLWithString:urlString]];
//播放新歌
[_player play];
}
}
(4).在viewController中,
假设给button一个触发事件,用来控制播放、暂停歌曲
- (void)buttonAction{
//用tag值来改变setTitle (初始时刻button = 1000)
if (_button.tag == 1000) {
NSString *urlString = @"http://fdfs.xmcdn.com/group14/M08/70/3F/wKgDZFX1m2_zB1prACBgVqJhyOA138.mp3";
[[Music shareInstance] playMusicWith:urlString];
[_button setTitle:@"暂停" forState: UIControlStateNormal];
_button.tag = 1001;
}else{
NSString *urlString = @"http://fdfs.xmcdn.com/group14/M08/70/3F/wKgDZFX1m2_zB1prACBgVqJhyOA138.mp3";
[[Music shareInstance] playMusicWith:urlString];
[_button setTitle:@"播放" forState:UIControlStateNormal];
_button.tag = 1000;
}
}
要求:给button一个触发事件,点击一下播放歌曲,显示暂停提示;
再点击一下暂停歌曲,显示播放字体;
封装一个music类:
(1).引入AVFoundation框架
#import<AVFoundation/AVFoundation.h>
(2).创建播放歌曲的类的对象以及方法:
@property(nonatomic, strong)AVPlayer *player;
@property(nonatomic, retain)NSString *currentURL; //url:网络接口
@property(nonatomic,assign)NSInteger
flag; //标签
//单例,只有这个工程关闭时,才退出歌曲播放
+ (Music *)shareInstance;
//播放歌曲,传进来一个URL
- (void)playMusicWith:(NSString *)urlString;
//暂停歌曲
- (void)pauseMusic;
(3).实现方法:
+ (Music *)shareInstance{
//只走一次
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
music = [[Music alloc]init];
});
return music;
}
- (void)playMusicWith:(NSString *)urlString{
if ([_currentURL isEqualToString:urlString]) {
//通过flag触发播放还是暂停:
if (_flag == 1) {
[_player play];
_flag = 0;
}else{
[_player pause];
_flag = 1;
}else{ //换歌
//记录当前歌曲URL
_currentURL = urlString;
//先暂停前一首歌
[_player pause];
//得到新的URL
_player = [[AVPlayer alloc]initWithURL:[NSURL URLWithString:urlString]];
//播放新歌
[_player play];
}
}
(4).在viewController中,
假设给button一个触发事件,用来控制播放、暂停歌曲
- (void)buttonAction{
//用tag值来改变setTitle (初始时刻button = 1000)
if (_button.tag == 1000) {
NSString *urlString = @"http://fdfs.xmcdn.com/group14/M08/70/3F/wKgDZFX1m2_zB1prACBgVqJhyOA138.mp3";
[[Music shareInstance] playMusicWith:urlString];
[_button setTitle:@"暂停" forState: UIControlStateNormal];
_button.tag = 1001;
}else{
NSString *urlString = @"http://fdfs.xmcdn.com/group14/M08/70/3F/wKgDZFX1m2_zB1prACBgVqJhyOA138.mp3";
[[Music shareInstance] playMusicWith:urlString];
[_button setTitle:@"播放" forState:UIControlStateNormal];
_button.tag = 1000;
}
}
相关文章推荐
- iOS开发中虚拟键盘相关的坑
- iOS雨笙 iOS中MVC的原理和联系
- iOS 判断iphone ipad 系统版本
- iOS Tips - 02
- iOS开发之xib技巧介绍
- 一只蹩脚的Smelly Cat
- iOS多线程操作(NSThread,GCD,NSNSOperation )
- ios-下载管理类封装
- 【读书笔记】iOS-编码对象
- iOS Tips-01
- 【读书笔记】iOS-编码对象
- iOS中两种管理状态栏
- iOS程序的启动过程
- iOS弹解盘时 控制界面滚动的封装类
- iOS开发-自定义后台显示图片
- [iOS开发]沙盒中的文件操作
- iOS开发:单例(Static)模式
- iOS --- 使用NSURL的urlWithString时,尽量先对字符串进行UTF8转码
- ios9 提交ipad出现bundle错误的解决方案
- ViewController 的view的3种创建方式