代码改变世界

ios 简单的音乐播放器,单机

2015-08-19 08:51  为技术  阅读(1007)  评论(0)    收藏  举报

//导入音视频框架
#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];
}