您的位置:首页 > 移动开发 > IOS开发

AVAudioPlayer和AVAudioPlayerDelegate-iOS音频播放器

2015-05-05 10:39 211 查看
学习总是在进行。

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 alloc] initWithData: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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: