iOS开发 System Sound Services(振动和提示音)

System Sound Services 播放音效

使用 System Sound Services方式只适合播放提示或者警告短小音频

声音长度不能超过30秒
声音文件必须是 PCM 或者是 IMA4(IMA/ADPCM) 格式。
必须是 .caf、.aif 、.wav 、的文件
不能控制播放进度
没有循环播放

iOS使用系统声音服务来支持三种不同的通知:

  1. 声音:立刻播放一个简单的声音文件。如果手机被设置为静音,用户什么也听不到
  2. 提醒:播放一个声音文件,如果手机被设置为静音或震动,将通过震动提醒用户
  3. 震动:震动手机,而不考虑其他设置

对于提醒音来说,与系统声音之间的差别在于,如果手机处于静音状态,提醒音将自动触发震动。提醒音的设置和用法与系统声音相同,区别在于系统声音调用 AudioServicesPlaySystemSound,而提醒音调用AudioServicesPlayAlertSound

调用AudioServicesCreateSystemSoundID(CFURLRef inFileURL,SystemSoundID* outSystemSoundID) 函数注册音频文件,第一个参数代表音频文件的URL(可通过NSURL 转换为CFURLRef),迭戈参数代表注册该音频的 SystemSoundID 。

当需要播放音频的时候,调用

AudioServicesPlaySystemSound(SystemSoundID inSystemSoundID)

立刻播放一个简单的声音文件。如果手机被设置为静音,用户什么也听不到

AudioServicesPlayAlertSound(SystemSoundID inSystemSoundID)

播放一个声音文件并震动,如果手机被设置为静音或震动(与用户在设置-声音响铃模式震动静音模式震动设置有关),那么将通过无提醒或震动提醒用户!

代码

首先 在项目中导入一个音频文件,注意是符合上述格式的音频

再导入头文件

#import <AudioToolbox/AudioToolbox.h>
复制代码

在ViewController.m 中

-(void)sound{
    SystemSoundID soundID;
    //NSBundle来返回音频文件路径
    NSString *soundFile = [[NSBundle mainBundle] pathForResource:@"dingdong" ofType:@"wav"];
    //建立SystemSoundID对象,但是这里要传地址(加&符号)。 第一个参数需要一个CFURLRef类型的url参数,要新建一个NSString来做桥接转换(bridge),而这个NSString的值,就是上面的音频文件路径
    AudioServicesCreateSystemSoundID((__bridge CFURLRef)[NSURL fileURLWithPath:soundFile], &soundID);
    //播放提示音 带震动
    AudioServicesPlayAlertSound(soundID);
    //播放系统声音
//    AudioServicesPlaySystemSound(soundID);
}
复制代码

Demo地址:下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值