【转载】iOS播放系统声音

【转载】iOS播放系统声音
0

作者:eoe耗子更新于 05月20日访问(605评论(0

iOS可通过两种方式播放声音:

1、播放压缩的声音文件,比如mp3文件,一般使用播放声音中提到的方法,适用于播放时间较长,比如大于30秒,AVAudioPlayer可以提供更多的控制特性,比如暂停等等
2、播放系统声音,比如翻页的哗啦声,应该使用播放系统声音的方法,因为压缩的声音文件比播放wav等非压缩声音文件在播放前消耗更多的处理器资源,这样的声音还要频繁的播放,而且,因为系统声音文件都较小,**一般小于30秒**,因此即使压缩格式,也不会节省多少存储空间。

本文介绍后者,播放系统声音。

系统声音属于AudioToolbox框架,因此使用前,需要给项目安装框架:
image_thumb9.png

另外,需要引用头文件:

1
#import <AudioToolbox/AudioToolbox.h>

播放系统声音,基本思路是:

1、在播放前,比如控制器初始化阶段,注册系统声音,并保存一个系统声音id
2、在需要播放系统声音的时候只需调用系统服务的全局方法,传入系统声音id即可
3、卸载已加载的声音(第3点是我自己加的)

注册系统声音,首先要创建实例变量,供后面播放时引用

1
SystemSoundID soundID;

然后,在比如控制器初始化代码部分,加入:

1
2
    NSURL *filePath   = [[NSBundle mainBundle] URLForResource:   @"pageflip" withExtension: @"aif"]; 
    AudioServicesCreateSystemSoundID((CFURLRef)filePath, &soundID);

这里的pageflip.aif是系统声音允许的格式。还可以接受:

caf
wav

如果你有MP3文件,可以转换成上述格式文件。我使用的是mac系统,临时找的Switch,可在网站上下载试用版。
image_thumb10.png

播放声音很简单:

1
    AudioServicesPlaySystemSound(soundID);

卸载声音

1
2
3
if(soundID){
    AudioServicesDisposeSystemSoundID(soundID), soundID = 0;
}

完整代码:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
  #import <AudioToolbox/AudioToolbox.h>
    SystemSoundID sameViewSoundID;
    NSString *thesoundFilePath = [[NSBundle mainBundle] pathForResource:@"Clap Crowd" ofType:@"caf"]; //音乐文件路径
    CFURLRef thesoundURL = (CFURLRef)[NSURL fileURLWithPath:thesoundFilePath];
    AudioServesCreateSystemSoundID(thesoundURL, &sameViewSoundID);
    //变量SoundID与URL对应
    AudioServicesPlaySystemSound(sameViewSoundID); //播放SoundID声音
   if(soundID){
       AudioServicesDisposeSystemSoundID(soundID), soundID = 0;
   }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值