首先
#import <AVFoundation/AVFoundation.h>
//設置代理
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];
}