AVAudioPlayer實(shí)現(xiàn)本地音頻的播放


1.使用AVAudioPlayer需要先導(dǎo)入AVFoundation系統(tǒng)庫(kù),接下來(lái)隨意找一首歌曲,拉進(jìn)工程的目錄下,我這里用的是薛之謙的一首歌,準(zhǔn)備工作完畢,開(kāi)始寫(xiě)代碼。
2.在ViewController.h做以下操作
  #import <UIKit/UIKit.h>
  #import <AVFoundation/AVFoundation.h>
 @interface ViewController : UIViewController
 {
    AVAudioPlayer *avAudioPlay;
    UIProgressView *progress;
    UISlider *volimSlider;
    NSTimer *timer;
 }
3.接下來(lái)在.m中完成功能的實(shí)現(xiàn)
3.1按鈕以及進(jìn)度條的創(chuàng)建
  - (void)CreatBt
{

//初始化三個(gè)button
NSArray *TitleArr = @[@"開(kāi)始",@"暫停",@"結(jié)束"];
for (int i =0; i<3; i++)
{
    UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [button setFrame:CGRectMake(150, 180+50*i, 60, 40)];
    button.tag = i+1;
    [button setTitle:TitleArr[i] forState:UIControlStateNormal];
    [button addTarget:self action:@selector(btclick:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:button];
}

//讀取音頻文件
NSURL *url =[[NSBundle mainBundle]URLForResource:@"我好像在哪見(jiàn)過(guò)你.mp3" withExtension:nil];
//添加播放器
avAudioPlay = [[AVAudioPlayer alloc]initWithContentsOfURL:url error:nil];
avAudioPlay.delegate = self;
//設(shè)置循環(huán)次數(shù),這里-1代表無(wú)限循環(huán)
avAudioPlay.numberOfLoops = -1 ;
//預(yù)播放
[avAudioPlay prepareToPlay];
//音頻播放進(jìn)度條
progress = [[UIProgressView alloc]initWithFrame:CGRectMake(90, 100, 200, 20)];

[self.view addSubview:progress];
timer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(PLAYPROGRESS) userInfo:nil repeats:YES];
//音量控制

volimSlider = [[UISlider alloc]initWithFrame:CGRectMake(90, 120, 200, 20)];
volimSlider.minimumValue = 0.0f;
volimSlider.maximumValue = 10.0f;
volimSlider.value = 5.0f;
[self.view addSubview:volimSlider];
UISwitch *switc =[[UISwitch alloc]initWithFrame:CGRectMake(160, 40, 60, 40)];
[switc addTarget:self action:@selector(onOrOff:) forControlEvents:UIControlEventValueChanged];
switc.on = YES;
[self.view addSubview:switc];

}
3.2按鈕的點(diǎn)擊方法的實(shí)現(xiàn)
  - (void)PLAYPROGRESS
{
     progress.progress = avAudioPlay.currentTime/avAudioPlay.duration;

}

- (void)onOrOff:(UISwitch *)sender
 {
     avAudioPlay.volume = sender.on;

}
- (void)volumeChange
{
     avAudioPlay.volume = volimSlider.value;

}
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
     //暫停定時(shí)器
     [timer setFireDate:[NSDate distantFuture]];


}

PS:下次打開(kāi)的時(shí)候在ViewWillAppear里實(shí)現(xiàn)定時(shí)器的打開(kāi)
- (void)viewWillAppear:(BOOL)animated
{
[timer setFireDate:[NSDate distantPast]];

}
4.附效果圖:
音樂(lè)播放
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容