iOS 開發 - 播放器Demo開發記錄

首先

#import <AVFoundation/AVFoundation.h>


於viewDidLoad中
//設置代理
    XYZAVAudioPlayer.delegate = self;

創建音頻類

@interface ViewController () {
    AVAudioPlayer *XYZAVAudioPlayer;   //播放器player
    NSTimer *timer;                 //監控音頻播放進度
    NSTimer *stoptimer;            //歌曲結束聲量控制
}

設置播放

//從budle路徑下讀取音頻文件  輕音樂 - 薩克斯回家 這個文件名是你的歌曲名字,mp3是你的音頻格式
    NSString *string = [[NSBundle mainBundle] pathForResource:@"G.E.M.鄧紫棋 - 喜歡你" ofType:@"mp3"];
    //把音頻文件轉換成url格式
    NSURL *url = [NSURL fileURLWithPath:string];
    //初始化音頻類 並且添加播放文件
    XYZAVAudioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
    
    //設置音樂播放次數  -1爲一直循環
    XYZAVAudioPlayer.numberOfLoops = -1;
    
    //預播放
    [XYZAVAudioPlayer prepareToPlay];
    
    //用NSTimer來監控音頻播放進度
    timer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self
                                           selector:@selector(playProgress)
                                           userInfo:nil repeats:YES];
    //初始化音量控制
    [self.VolumeSlider addTarget:self action:@selector(volumeChange)
                forControlEvents:UIControlEventValueChanged];
    //設置最小音量
    self.VolumeSlider.minimumValue = 0.0f;
    //設置最大音量
    self.VolumeSlider.maximumValue = 10.0f;
    //初始化音量爲多少
    self.VolumeSlider.value = 5.0f;
    
    //聲音開關控件(靜音)
    [self.musicSwith addTarget:self action:@selector(onOrOff:) forControlEvents:UIControlEventValueChanged];
    //默認狀態爲打開
    self.musicSwith.on = YES;
    
    //進度條slider控件
    [self.musicSlider addTarget:self action:@selector(playSlider) forControlEvents:UIControlEventValueChanged];

    stoptimer = [NSTimer timerWithTimeInterval:0.1 target:self selector:@selector(selector) userInfo:nil repeats:YES];

餘下方法

//進度條控制
-(void)playSlider {
    XYZAVAudioPlayer.currentTime = XYZAVAudioPlayer.duration * self.musicSlider.value;
}

//播放
- (void)play
{
    [XYZAVAudioPlayer play];
}
//暫停
- (void)pause
{
    [XYZAVAudioPlayer pause];
}
//停止
- (void)stop
{
    XYZAVAudioPlayer.currentTime = 0;  //當前播放時間設置爲0
    [XYZAVAudioPlayer stop];
}
//播放進度條
- (void)playProgress
{
    //通過音頻播放時長的百分比,給progressview進行賦值;
    self.musicprogress.progress = XYZAVAudioPlayer.currentTime/XYZAVAudioPlayer.duration;
    NSLog(@"%f --- %f",XYZAVAudioPlayer.currentTime,XYZAVAudioPlayer.duration);
    self.startTime.text = [NSString stringWithFormat:@"%f",XYZAVAudioPlayer.currentTime];
    self.stopTime.text = [NSString stringWithFormat:@"%f",XYZAVAudioPlayer.duration];

    self.musicSlider.value = XYZAVAudioPlayer.currentTime/XYZAVAudioPlayer.duration;
}

//聲音開關(是否靜音)
- (void)onOrOff:(UISwitch *)sender
{
    XYZAVAudioPlayer.volume = sender.on;
}

//播放音量控制
//待實現控制系統音量
- (void)volumeChange
{
    XYZAVAudioPlayer.volume = self.VolumeSlider.value;
}

//播放完成時調用的方法  (代理裏的方法),需要設置代理纔可以調用
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
    [timer invalidate]; //NSTimer暫停   invalidate  使...無效;
}

- (IBAction)StopBtn:(id)sender {
    [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(stopVolume:) userInfo:nil repeats:YES];
    XYZAVAudioPlayer.currentTime = 0;  //當前播放時間設置爲0
    [XYZAVAudioPlayer stop];
}

- (IBAction)PlayBtn:(id)sender {
    [XYZAVAudioPlayer play];
}
- (IBAction)PauseBtn:(id)sender {
    [XYZAVAudioPlayer pause];
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章