ios 简单的音乐播放器,单机
2015-08-19 08:51
543 查看
//导入音视频框架
#import <AVFoundation/AVFoundation.h>
@interface RootViewController : UIViewController
//声明 音频播放对象 属性
@property (nonatomic, retain) AVAudioPlayer * player;
- (AVAudioPlayer *)player
{
if (!_player)
{
//获得歌曲路径
NSURL * url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:[self.musicArray objectAtIndex:self.currentPlayIndex] ofType:nil]];
//根据歌曲路径初始化播放器
self.player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
//播放器是否允许改变播放速度
self.player.enableRate = YES;
}
return [[_player retain] autorelease];
}
- (void)voiceChange:(UISlider *)sender
{
//改变播放器的声音
self.player.volume = sender.value;
}
- (void)speedChange:(UISlider *)sender
{
//改变播放器的速度
self.player.rate = sender.value;
}
- (void)channelChange:(UISlider *)sender
{
//改变播放器的声道
self.player.pan = sender.value;
}
下一首按钮的方法
- (void)lastButtonClick:(UIButton *)sender
{
if (self.currentPlayIndex > 0) {
self.currentPlayIndex--;
[self.player stop];
self.player = nil;
[self playButtonClick:self.controlView.playButton];
}
}
//正在播就停止并换图标,没在博就play,换图标并调用放阿飞refreshDisplay:
- (void)playButtonClick:(UIButton *)sender
{
if ([self.player isPlaying]) {
[self.player pause];
[sender setImage:[UIImage imageNamed:@"play.png"] forState:UIControlStateNormal];
}else
{
[self.player play];
[sender setImage:[UIImage imageNamed:@"pause.png"] forState:UIControlStateNormal];
self.timer = [NSTimer scheduledTimerWithTimeInterval:.1
target:self
selector:@selector(refreshDisplay:)
userInfo:nil
repeats:YES];
}
}
- (void)nextButtonClick:(UIButton *)sender
{
if (self.currentPlayIndex < self.musicArray.count - 1) {
self.currentPlayIndex++;
[self.player stop];
self.player = nil;
[self playButtonClick:self.controlView.playButton];
}
}
- (void)progessChange:(UISlider *)sender
{
//当人为滑动进度条时, 根据进度条的值改变播放器当前的进度
self.player.currentTime = sender.value;
NSLog(@"%f", sender.value);
}
- (void)refreshDisplay:(NSTimer *)sender
{
self.displayView.progressSlider.value = self.player.currentTime;
// 将时间转换为分禾苗
int currentMinute = (int)self.player.currentTime / 60;
int currentSecond = (int)self.player.currentTime % 60;
self.displayView.currentTimeLabel.text = [NSString stringWithFormat:@"0%d:%d", currentMinute, currentSecond];
int surplusMinute = (int)(self.player.duration - self.player.currentTime) / 60;
int surplusSecond = (int)(self.player.duration - self.player.currentTime) % 60;
self.displayView.continueTimeLabel.text = [NSString stringWithFormat:@"0%d:%d", surplusMinute, surplusSecond];
}
#import <AVFoundation/AVFoundation.h>
@interface RootViewController : UIViewController
//声明 音频播放对象 属性
@property (nonatomic, retain) AVAudioPlayer * player;
- (AVAudioPlayer *)player
{
if (!_player)
{
//获得歌曲路径
NSURL * url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:[self.musicArray objectAtIndex:self.currentPlayIndex] ofType:nil]];
//根据歌曲路径初始化播放器
self.player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
//播放器是否允许改变播放速度
self.player.enableRate = YES;
}
return [[_player retain] autorelease];
}
- (void)voiceChange:(UISlider *)sender
{
//改变播放器的声音
self.player.volume = sender.value;
}
- (void)speedChange:(UISlider *)sender
{
//改变播放器的速度
self.player.rate = sender.value;
}
- (void)channelChange:(UISlider *)sender
{
//改变播放器的声道
self.player.pan = sender.value;
}
下一首按钮的方法
- (void)lastButtonClick:(UIButton *)sender
{
if (self.currentPlayIndex > 0) {
self.currentPlayIndex--;
[self.player stop];
self.player = nil;
[self playButtonClick:self.controlView.playButton];
}
}
//正在播就停止并换图标,没在博就play,换图标并调用放阿飞refreshDisplay:
- (void)playButtonClick:(UIButton *)sender
{
if ([self.player isPlaying]) {
[self.player pause];
[sender setImage:[UIImage imageNamed:@"play.png"] forState:UIControlStateNormal];
}else
{
[self.player play];
[sender setImage:[UIImage imageNamed:@"pause.png"] forState:UIControlStateNormal];
self.timer = [NSTimer scheduledTimerWithTimeInterval:.1
target:self
selector:@selector(refreshDisplay:)
userInfo:nil
repeats:YES];
}
}
- (void)nextButtonClick:(UIButton *)sender
{
if (self.currentPlayIndex < self.musicArray.count - 1) {
self.currentPlayIndex++;
[self.player stop];
self.player = nil;
[self playButtonClick:self.controlView.playButton];
}
}
- (void)progessChange:(UISlider *)sender
{
//当人为滑动进度条时, 根据进度条的值改变播放器当前的进度
self.player.currentTime = sender.value;
NSLog(@"%f", sender.value);
}
- (void)refreshDisplay:(NSTimer *)sender
{
self.displayView.progressSlider.value = self.player.currentTime;
// 将时间转换为分禾苗
int currentMinute = (int)self.player.currentTime / 60;
int currentSecond = (int)self.player.currentTime % 60;
self.displayView.currentTimeLabel.text = [NSString stringWithFormat:@"0%d:%d", currentMinute, currentSecond];
int surplusMinute = (int)(self.player.duration - self.player.currentTime) / 60;
int surplusSecond = (int)(self.player.duration - self.player.currentTime) % 60;
self.displayView.continueTimeLabel.text = [NSString stringWithFormat:@"0%d:%d", surplusMinute, surplusSecond];
}
相关文章推荐
- xcode文件找不到---“AFNetworking.h”file not found
- 单例——iOS学习连载19
- ios开发数组排序(数组中包括字典)
- iOS 小技巧
- iOS创建桌面快捷方式代码
- 苹果公司职员开发时常用的设计模式
- iOS开发,启动页,全屏,延时的设置
- IOS常用第三方框架
- 多次替换字符串处理
- iOS沙盒路径
- 部分文件关闭ARC
- 加载plist文件
- iOS 性能优化系列
- TI-RTOS Sys-Bios操作系统无法获取Hwi,Swi的Name问题
- iOS NSString 的使用深入
- iOS 调用相册或摄像头后状态栏消失解决办法
- iOS中几种数据持久化方案
- iOS学习(项目中遇到的错误1)
- iOS 任意圆角button,左圆右直,左直右圆,上圆下直,上直下圆
- 蓝牙4.0BLE cc2540 cc2541 ios OAD课程(空中固件升级)[原版的,多图]