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
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
相关文章推荐
- AVAudioPlayer音频播放器—IOS开发
- iOS中的音频服务和音频AVAudioPlayer音频播放器使用指南
- AVAudioPlayer音频播放器—IOS开发
- AVAudioPlayer音频播放器—IOS开发
- AVAudioPlayer音频播放器—IOS开发
- AVAudioPlayer音频播放器—IOS开发
- IOS:AVAudioPlayer音频播放器
- AVAudioPlayer音频播放器—IOS开发
- AVAudioPlayer音频播放器—IOS开发
- AVAudioPlayer音频播放器—IOS开发
- iOS AVAudioPlayer和AVAudioPlayerDelegate-音频播放处理中断
- iOS AVAudioPlayer音频播放器
- AVAudioPlayer音频播放器—IOS开发
- IOS:AVAudioPlayer音频播放器
- IOS开发:AVAudioPlayer音频播放器
- AVAudioPlayer音频播放器—IOS开发
- iOS用AVAudioPlayer播放m4a音频
- iOS开发之AVAudioPlayer 音频播放
- iOS AvPlayer AvAudioPlayer音频的后台播放问题
- iOS AvPlayer AvAudioPlayer音频的后台播放问题