美文网首页
iOS 点击音效实现方法

iOS 点击音效实现方法

作者: 骑行怪状 | 来源:发表于2016-04-11 20:33 被阅读1802次
    voice-record-button.png

    在iOS中,音效我们是使用AudioToolbox.framework框架实现。
    将短音频注册到系统声音服务(SystemSoundService), 音效框架,导入AudioToolbox.framework框架,添加头文件:

       #import <AudioToolbox/AudioToolbox.h>
    

    AudioToolbox.framework框架是一套基于C语言的框架
    它的实现原理是将短音频注册到系统声音服务(SystemSoundService)

    示例:

    回调

    - (void)viewDidLoad{
    [super viewDidLoad];
    [self playSoundEffect:@"bellTone.wav"];
    }
    

    pragma mark -音效

    音效播放完成的回调函数,这个是C语言函数,第一个参数是音效ID,第二个是万能参数

     void soundCompleteCallBack(SystemSoundID soundID, void    *clientData) {
     NSLog(@"播放完成");
    }
    
    - (void)playSoundEffect:(NSString *)name {
        //获取音效文件路径
        NSString *filePath = [[NSBundle mainBundle] pathForResource:name ofType:nil];
        //创建音效文件URL
        NSURL *fileUrl = [NSURL URLWithString:filePath];
        //音效声音的唯一标示ID
        SystemSoundID soundID = 0;
        //将音效加入到系统音效服务中,NSURL需要桥接成CFURLRef,会返回一个长整形ID,用来做音效的唯一标示
        AudioServicesCreateSystemSoundID((__bridge CFURLRef)(fileUrl), &soundID);
        //设置音效播放完成后的回调C语言函数
        AudioServicesAddSystemSoundCompletion(soundID,NULL,NULL,soundCompleteCallBack,NULL);
        //开始播放音效
        AudioServicesPlaySystemSound(soundID);
    }
    

    注意事项:

    • 添加进系统声音服务,获得系统声音ID,ID是区分不同音效的唯一标示
           /* 音效文件URL,需要把NSURL桥接成CGURLRef */
         void AudioServicesCreateSystemSoundID(
         CFURLRef inFileURL,   SystemSoundID *outSystemSoundID /* 返回音效唯一标示ID */
         );
    
    • 开始播放,有两种播放模式

          /* 开始播放音效 */
       void AudioServicesPlaySystemSound(SystemSoundID   inSystemSoundID);
       /* 开始播放音效并带震动 */
       void AudioServicesPlayAlertSound(SystemSoundID inSystemSoundID);
      

    音频播放时间不能超过30s
    数据必须是PCM或者IMA4格式,现在的基本都符合
    音频文件必须是CAF、AIF、WAV的一种,实际上有些MP3格式也可以播放。

      参考博客:http://www.jianshu.com/p/4a3d0152913a

    相关文章

      网友评论

          本文标题: iOS 点击音效实现方法

          本文链接:https://www.haomeiwen.com/subject/qemilttx.html