iOS 音频(二) - System Sound Service
2023-02-18 本文已影响0人
搬砖的crystal
1.简介
系统声音服务(System Sound Services)提供了一个接口,用于播放不超过 30 秒的声音。它支持的文件格式有限,具体地说只有 CAF
、AIF
和使用 PCM
或 IMA/ADPCM
数据的 WAV
文件。不能操纵声音和控制音量。
iOS 系统声音服务支持三种类型通知:
(1)声音:立刻播放一个简单的声音文件。如果手机被设置为静音,用户什么也听不到
(2)提醒:播放一个声音文件,如果手机被设置为静音或震动,将通过震动提醒用户
(3)震动:震动手机,而不考虑其他设置
2.使用
要在项目中使用系统声音服务,首先在自己的工程中添加 AudioToolbox.framework
库,在 .m
文件中添加头文件导入 AudioToolbox.h
#import <AudioToolbox/AudioToolbox.h>
系统声音服务并非是通过类实现的,而是使用传统的 C 语言函数调用来触发播放操作。要播放音频,需要使用的两个函数是 AudioServicesCreateSystemSoundID
和 AudioServicesPlaySystemSound
。还需要声明一个类型为 SystemSoundID
的变量,它表示要使用的声音文件。
//导入头文件
#import <AudioToolbox/AudioToolbox.h>
/**
播放声音
*/
- (void)playSystemSound {
AudioServicesPlaySystemSound(self.soundID);
}
/**
播放声音 提醒
*/
- (void)playAlertSound {
AudioServicesPlayAlertSound(self.soundID);
}
/**
震动
*/
- (void)playShakeSound {
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
}
/**
自定义声音
*/
- (SystemSoundID)soundID {
if (!_soundID) {
NSString *soundFile = [[NSBundle mainBundle] pathForResource:@"sound" ofType:@"wav"];
NSURL *url = [NSURL fileURLWithPath:soundFile];
AudioServicesCreateSystemSoundID((__bridge CFURLRef)url, &_soundID);
}
return _soundID;
}
/**
系统声音
*/
当参数为 1000-2000 之间数字时就是播放系统声音。
AudioServicesPlaySystemSound(参数);