iOS 系统声音播放

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

*  播放压缩的声音文件,比如mp3文件,一般使用播放声音中提到的方法,适用于播放时间较长,比如大于30秒,AVAudioPlayer可以提供更多的控制特性,比如暂停等等

*   播放系统声音,比如翻页的哗啦声,应该使用播放系统声音的方法,因为压缩的声音文件比播放wav等非压缩声音文件在播放前消耗更多的处理器资源,这样的声音还要频繁的播放,而且,因为系统声音文件都较小,一般小于30秒,因此即使压缩格式,也不会节省多少存储空间。

播放系统声音:首先要导入系统框架 <AudioToolbox/AudioToolbox.h>

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

* 在播放前,比如控制器初始化阶段,注册系统声音,并保存一个系统声音id

* 在需要播放系统声音的时候只需调用系统服务的全局方法,传入系统声音id即可

 在我们了解了基本思路后,就可以上代码了:

*.h文件

+ (void)initSystemSoundWithName:(NSString *)soundName SoundType:(NSString *)soundType{
    [ZKAudioToolBox initAudioToolBox];
    if (audioTool) {
        //得到音频路径
        NSString *path=[NSString stringWithFormat:@"/System/Library/Audio/UISounds/%@.%@",soundName,soundType];
        if (path) {
            OSStatus error = AudioServicesCreateSystemSoundID((__bridge CFURLRef)[NSURL fileURLWithPath:path],&audioTool->sound);

            if (error != kAudioServicesNoError) {//获取的声音的时候,出现错误
                audioTool->sound=nil;
            }

            //获取自定义的声音
//            NSString *thesoundFilePath = [[NSBundle mainBundle] pathForResource:soundName ofType:soundType]; //音乐文件路径
//            CFURLRef thesoundURL = (__bridge CFURLRef)[NSURL fileURLWithPath:thesoundFilePath];
//            AudioServicesCreateSystemSoundID(thesoundURL, &audioTool->sound);

            //开始播放声音
            AudioServicesPlaySystemSound(audioTool->sound);
        }
    }
}

  

  如上就能正常的播放声音了,写成单例的形式,就能便于多个页面调用!!!

时间: 2024-12-14 23:20:41

iOS 系统声音播放的相关文章

ios系统声音

#import <Foundation/Foundation.h> #import <AudioToolbox/AudioToolbox.h> @interface PlaySound : NSObject { SystemSoundID sound;//系统声音的id 取值范围为:1000-2000 } - (id)initSystemShake; - (id)initSystemSoundWithName:(NSString *)soundName soundType:(NSS

iOS 播放系统声音

准备工作: 找到需要的声音(不要大于30秒),如果是mp3格式,则直接将其后缀名改为.wav: 将声音文件添加到系统中. 第一步:导入  AudioToolbox.framework  文件 第二步:在需要声音的类的.h文件中添加     #import <AudioToolbox/AudioToolbox.h> 同时,声明如下语句 static SystemSoundID shake_sound_male_id = 0; 第三步:编码,如下: 1. 播放震动 AudioServicesPla

iOS调用AudioServicesPlaySystemSound方法播放系统声音

播放系统声音需要导入框架:AudioToolbox.framework 图片看不清请双击查看大图 System Sound ID 介绍如下: AudioServices AudioServices is a group of C functions in AudioToolbox for playing short (≤30 seconds) sounds. Predefined sounds There are some predefined system sounds, for the sy

iOS 之播放系统声音

导入框架: 代码: [cpp] view plaincopy #import <UIKit/UIKit.h> #import <AudioToolbox/AudioToolbox.h> @interface MsgPlaySound : NSObject { SystemSoundID sound;//系统声音的id 取值范围为:1000-2000 } - (id)initSystemShake;//系统 震动 - (id)initSystemSoundWithName:(NSSt

Android 4.3实现类似iOS在音乐播放过程中如果有来电则音乐声音渐小铃声渐大的效果

目前Android的实现是:有来电时,音乐声音直接停止,铃声直接直接使用设置的铃声音量进行铃声播放. Android 4.3实现类似iOS在音乐播放过程中如果有来电则音乐声音渐小铃声渐大的效果. 如果要实现这个效果,首先要搞清楚两大问题: 1.来电时的代码主要实现流程. 2.主流音乐播放器在播放过程中,如果有来电,到底在收到了什么事件后将音乐暂停了? 一:来电时的代码主要实现流程 我不是第一研究来电代码的人,网上已经有高手对这个流程剖析过,不是不完全符合我的要求,我参考过的比较有价值的是如下两个

ios开发——实用技术篇Swift篇&amp;系统声音

系统声音 1 // MARK: - 系统声音 2 /*----- 系统声音 ------*/ 3 @IBAction func systemSound() 4 { 5 //建立的SystemSoundID对象 6 var soundID: SystemSoundID = 0 7 8 //获取声音文件地址 9 var path = NSBundle.mainBundle().pathForResource("SaoMa", ofType: "wav") 10 11 /

iOS中声音采集与播放的实现(使用AudioQueue)

都说iOS最恶心的部分是流媒体,其中恶心的恶心之处更在即时语音. 所以我们先不谈即时语音,研究一下,iOS中声音采集与播放的实现. 要在iOS设备上实现录音和播放功能,苹果提供了简单的做法,那就是利用AVAudioRecorder和AVAudioPlayer.度娘大多数也是如此.但是这种方法有很大的局限性.单说说这种做法:录音,首先得设置录音文件路径,然后录音数据直接写入了文件.播放也是首先给出文件路径,等到音频整个加载完成了,才能开始播放.这相当不灵活. 我的做法是利用音频队列AudioQue

iOS调用系统声音和震动

调取系统声音和震动 首先应当引入系统库:AudioToolbox.framework 引用: #import <AudioToolbox/AudioToolbox.h> 1.调用震动: AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); 2,调用系统声音 a.直接调用 AudioServicesPlaySystemSound(1007);//这个声音是是类似于QQ声音的 b.调用更多的系统声音 SystemSoundID sound; N

【iOS开发之旅】iOS系统架构

iOS的系统架构分为四个层次:核心操作系统层(Core OS ).核心服务层(Core Services ).媒体层(Media )和可触摸层(Cocoa Touch ).下面是IOS系统结构图. 一.Core OS(核心操作系统层) 是用FreeBSD和Mach所改写的Darwin, 是开源.符合POSIX标准的一个Unix核心.这一层包含或者说是提供了整个iPhone OS的一些基础功能,比如:硬件驱动, 内存管理,程序管理,线程管理(POSIX),文件系统,网络(BSD Socket),以