使用System Sound Services 播放音效(最简单,比较底层),调用AudioServicesPlaySystemSound()
1、适用范围:一些很小的提示或警告音频。
2、使用限制:
声音长度不能超过30秒 声音文件必须是PCM或IMA4(IMA/ADPCM)格式。(有时候可播放一些特殊的.mp3) 打包成.caf、.aif或.wav文件 不能控制播放进度 调用方法后立即播放声音 没有循环播放和立体声播放控制。
3、AudioServicesPlaySystemSound()还可以调用系统的震动功能
4、可以用AudioServicesAddSystemSoundCompletion()函数增加CallBack函数来支持循环播放
5、播放音乐操作步骤
a、调用AudioServicesCreateSystemSoundID(CFURLRef inFileURL, SystemSoundID *outSystem SoundID)函数注册音频文件 b、若需要播放完成后进行某些操作,可调用AudiServicesAddSystemSoundCompletion()函数为指定的SoundID注册CallBack函数。 c、调用AudiServicesPlaySystemSound() // 播放音频 调用AudiServicesPlayAlertSound// 播放音频的同步调用系统的震动功能
6、代码演示
#import "ViewController.h" #import <AudioToolbox/AudioToolbox.h> static void completionCallback(SystemSoundID mySSID) { // 播放完毕之后,再次播放 AudioServicesPlaySystemSound(mySSID); } @implementation ViewController SystemSoundID crash; - (void)viewDidLoad { [super viewDidLoad]; // 定义要播放的音频文件的URL NSURL* crashUrl = [[NSBundle mainBundle] URLForResource:@"crash" withExtension:@"wav"]; // 加载音效文件 AudioServicesCreateSystemSoundID((__bridge CFURLRef)crashUrl , &crash); // 为crash播放完成绑定回调函数 AudioServicesAddSystemSoundCompletion(crash, NULL, NULL, (void*)completionCallback ,NULL); } - (IBAction)play:(id)sender { // // 播放crash代表的音频 AudioServicesPlaySystemSound(crash); // 播放crash代表的音频,并控制设备震动 // AudioServicesPlayAlertSound(crash); } @end