/****************** 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;
}
}