AVAudioPlayer和AVAudioPlayerDelegate-iOS音频播放器

学习总是在进行。
iPhone可以播放音频文件。这个我想地球人都知道。但是如何播放?今天来学习一下。
现学现卖吧!

1.加入音频相应的框架到项目中

#import


2.声明音频播放类,并且实现AVAudioPlayerDelegate协议

@interface SquareViewController : UIViewController<</span>AVAudioPlayerDelegate>{

    AVAudioPlayer *_audioPlayer;

}

@property (nonatomic,retain)AVAudioPlayer *audioPlayer;


3.实现AVAudioPlayerDelegate协议方法。

 

#pragma mark - AVAudioPlayerDelegate


// 音频播放完成时

- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag{

    // 音频播放完成时,调用该方法。

    // 参数flag:如果音频播放无法解码时,该参数为NO

    //当音频被终端时,该方法不被调用。而会调用audioPlayerBeginInterruption方法

        // audioPlayerEndInterruption方法

     



}


// 解码错误 

- (void)audioPlayerDecodeErrorDidOccur:(AVAudioPlayer *)player error:(NSError*)error{

    NSLog(@"解码错误!");



}


// 当音频播放过程中被中断时

- (void)audioPlayerBeginInterruption:(AVAudioPlayer *)player{

    // 当音频播放过程中被中断时,执行该方法。比如:播放音频时,电话来了!

    // 这时候,音频播放将会被暂停。

}


// 当中断结束时 

- (void)audioPlayerEndInterruption:(AVAudioPlayer *)player withOptions:(NSUInteger)flags{


    // AVAudioSessionInterruptionFlags_ShouldResume 表示被中断的音频可以恢复播放了。

  // 该标识在iOS 6.0 被废除。需要用flags参数,来表示视频的状态。

     

    NSLog(@"中断结束,恢复播放");

    if (flags == AVAudioSessionInterruptionFlags_ShouldResume && player != nil){

        [player play];

    }


}


//- (void)audioPlayerEndInterruption:(AVAudioPlayer *)player withFlags:(NSUInteger)flags {

//

//    //该方法在iOS 6.0 中被废除

//    if (flags == AVAudioSessionInterruptionFlags_ShouldResume && player != nil){

//        [player play];

//    }

//

//}

//

//- (void)audioPlayerEndInterruption:(AVAudioPlayer *)player{

//    //该方法被废除

//

//}



注意:因为以上两个方法在iOS 6.0 已经被废除。故注释。

4.使用音频播放器播放音频文件

//异步加载音频播放器进行播放

    self.view.backgroundColor = [UIColor whiteColor];

    dispatch_queue_t dispatchQueue =dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

    dispatch_async(dispatchQueue, ^(void) {

        NSBundle *mainBundle = [NSBundle mainBundle];

        NSString *filePath = [mainBundle pathForResource:@"mySong"ofType:@"mp3"];

        NSData *fileData = [NSData dataWithContentsOfFile:filePath];

        NSError *error = nil;

        // 初始化音频控制器 

        self.audioPlayer = [[AVAudioPlayer allocinitWithData:fileData error:&error];

        if (self.audioPlayer != nil){

            

            self.audioPlayer.delegate = self;// 设置 delegate

            if ([self.audioPlayer prepareToPlay] && [self.audioPlayer play]){

                // 播放成功 

            }

            else {

                // 播放失败 

            }

        }

        else {

            // 初始化 AVAudioPlayer 失败 

        }

    });


简单吧!

希望对你有所帮助!

转载:http://blog.sina.com.cn/s/blog_7b9d64af0101bvdt.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值