音频播放AVFoundation

版权声明:本文为延成原创文章,转载请标明出处

#import "VCMusicPlayer.h"
#import <AVFoundation/AVFoundation.h>

@interface VCMusicPlayer ()<AVAudioPlayerDelegate>
{
    NSArray* _titleArray;
    UIProgressView* _progressView;
    UISlider* _slide;
    UISwitch* _swit;
    AVAudioPlayer* _player;
    NSTimer* _timer;
}

@end

@implementation VCMusicPlayer

- (void)viewDidLoad {
    [super viewDidLoad];
    [self initView];
    [self createPlayer];
}

-(void)initView{
    _titleArray = [NSArray arrayWithObjects:@"播放按钮",@"暂停按钮",@"停止按钮", nil];
    for (int i=0; i<_titleArray.count; i++) {
        UIButton* btn = [[UIButton alloc]initWithFrame:CGRectMake(150, (1+i)*80, 120, 40)];
        [btn setTitle:_titleArray[i] forState:UIControlStateNormal];
        [btn setBackgroundColor:[UIColor systemBlueColor]];
        [btn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
        [btn addTarget:self action:@selector(pressBtn:) forControlEvents:UIControlEventTouchUpInside];
        [btn setTag:101+i];
        [self.view addSubview:btn];
    }
    
    _progressView = [[UIProgressView alloc]initWithFrame:CGRectMake(50, 360, 300, 20)];
    _progressView.progress = 0;
    
    _slide = [[UISlider alloc]initWithFrame:CGRectMake(50, 460, 300, 20)];
    _slide.maximumValue = 100;
    _slide.minimumValue = 0;
    [_slide addTarget:self action:@selector(volumeChange:) forControlEvents:UIControlEventValueChanged];
    
    [self.view addSubview:_progressView];
    [self.view addSubview:_slide];
    
    _timer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(updateProgress) userInfo:nil repeats:YES];
}


-(void)createPlayer{
    
    //获取本地资源
    NSString* str = [[NSBundle mainBundle]pathForResource:@"花火" ofType:@"mp3"];
    //将字符串转化为url
    NSURL*urlMusic = [NSURL fileURLWithPath:str];
    //创建音频播放器对象
    _player = [[AVAudioPlayer alloc]initWithContentsOfURL:urlMusic error:nil];
    
    [_player prepareToPlay];
    [_player setNumberOfLoops:1];
    [_player setVolume:0.5];
    [_player setDelegate:self];
}

-(void)pressBtn:(UIButton*)btn{
 
    switch (btn.tag) {
        case 101:{
            [_player play];
        }
            break;
        case 102:{
            [_player pause];
        }
            break;
        case 103:{
            [_player stop];
            [_player setCurrentTime:0];
        }
            break;
        default:
            break;
    }
}


-(void)volumeChange:(UISlider*)slide{
    [_player setVolume:slide.value/100];
}

-(void)updateProgress{
    _progressView.progress = _player.currentTime/_player.duration;
}

- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag{
    
    [_timer invalidate];
}

@end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值