您的位置:首页 > 移动开发 > IOS开发

[iOS 转]系统声音服务与震动

2016-06-30 10:14 393 查看
系统声音服务(System Sound Services)提供了一个接口,用于播放不超过30秒的声音。它支持的文件格式有限,具体地说只有CAF、AIF和使用PCM或IMA/ADPCM数据的WAV文件。由于这些函数没有提供操纵声音和控制音量的功能,所以当你为多媒体或者游戏创建专门的配乐时,不要使用系统声音服务。

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

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

2. 提醒:播放一个声音文件,如果手机被设置为静音或震动,将通过震动提醒用户

3. 震动:震动手机,而不考虑其他设置

要在项目中使用系统声音服务,首先要导入AudioToolbox.h

#import <AudioToolbox/AudioToolbox.h>


系统声音服务并非是通过类实现的,而是使用传统的C语言函数调用来触发播放操作。要播放音频,需要使用的两个函数是AudioServicesCreateSystemSoundID 和 AudioServicesPlaySystemSound。还需要声明一个类型为SystemSoundID的变量,它表示要使用的声音文件。下面演示了如何加载并播放声音:

- (IBAction)testSystemSound:(id)sender
{
SystemSoundID soundID;
NSString *strSoundFile = [[NSBundle mainBundle] pathForResource:@"alertsound" ofType:@"wav"];
AudioServicesCreateSystemSoundID((__bridge CFURLRef)[NSURL fileURLWithPath:strSoundFile],&soundID);
AudioServicesPlaySystemSound(soundID);
}


其实这段代码应该这样来理解:

在写这个功能时最主要是两句代码:

SystemSoundID soundID;
AudioServicesPlaySystemSound(soundID);


soundID ==> 1000 ~1035 以此类推

震动:

AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);


如果视图震动不支持震动的设备(如iPad2),将静默失败。因此将震动代码留在应用程序中不会有任何害处,而不管目标设备是什么。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: