要使用AVAudioPlayer播放音乐文件,首先要往项目中导入AVFoundation.framework,然后在具体的ViewController内实现"AVAudioPlayerDelegate"协议方法。具体实现代码如下:点击button,开始播放音乐。
#import "ViewController.h"
/**
* 导入框架
*/
#import <AVFoundation/AVFoundation.h>
/**
* 添加代理
*/
@interface ViewController ()<AVAudioPlayerDelegate>
{
AVAudioPlayer *audioPlayer;
}
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//找到音乐的播放路劲
NSString *path=[[NSBundle mainBundle]pathForResource:@"hightemper1" ofType:@"mp3"];
NSData *musicData=[NSData dataWithContentsOfFile:path];
audioPlayer=[[AVAudioPlayer alloc]initWithData:musicData error:nil];
audioPlayer.delegate=self;
UIButton *btn=[[UIButton alloc]initWithFrame:CGRectMake(110, 200, 100, 44)];
[btn setTitle:@"播放" forState:UIControlStateNormal];
[btn addTarget:self action:@selector(startPlay) forControlEvents:UIControlEventTouchUpInside];
btn.backgroundColor=[UIColor redColor];
[self.view addSubview:btn];
// Do any additional setup after loading the view, typically from a nib.
}
-(void)startPlay{
if (audioPlayer.prepareToPlay) {
//准备日就绪,开始播放
[audioPlayer play];
}
}
/**
* 代理方法的实现
*/
-(void)audioPlayerBeginInterruption:(AVAudioPlayer *)player{
NSLog(@"播放中断");
}
-(void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag{
NSLog(@"播放完成");
}
-(void)audioPlayerEndInterruption:(AVAudioPlayer *)player withOptions:(NSUInteger)flags{
NSLog(@"中断事件结束----->一般在此方法内重新播放音乐");
if (flags == AVAudioSessionInterruptionOptionShouldResume) {
[audioPlayer play];
}
}