使用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

原文地址:https://www.cnblogs.com/songxing10000/p/5074127.html