zoukankan      html  css  js  c++  java
  • 使用System Sound Services 播放音效(最简单,比较底层),调用AudioServicesPlaySystemSound()

    1、适用范围:一些很小的提示或警告音频。

    2、使用限制:

    声音长度不能超过30秒
    
    声音文件必须是PCM或IMA4(IMA/ADPCM)格式。(有时候可播放一些特殊的.mp3)
    
    打包成.caf、.aif或.wav文件
    
    不能控制播放进度
    
    调用方法后立即播放声音
    
    没有循环播放和立体声播放控制。

    3、AudioServicesPlaySystemSound()还可以调用系统的震动功能

    4、可以用AudioServicesAddSystemSoundCompletion()函数增加CallBack函数来支持循环播放

    5、播放音乐操作步骤

    a、调用AudioServicesCreateSystemSoundID(CFURLRef inFileURL, SystemSoundID *outSystem SoundID)函数注册音频文件
    
    b、若需要播放完成后进行某些操作,可调用AudiServicesAddSystemSoundCompletion()函数为指定的SoundID注册CallBack函数。
    
    c、调用AudiServicesPlaySystemSound() // 播放音频
    
        调用AudiServicesPlayAlertSound// 播放音频的同步调用系统的震动功能

    6、代码演示

    #import "ViewController.h"
    #import <AudioToolbox/AudioToolbox.h>
    
    static void completionCallback(SystemSoundID mySSID)
    {
        // 播放完毕之后,再次播放
        AudioServicesPlaySystemSound(mySSID);
    }
    @implementation ViewController
    SystemSoundID crash;
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        // 定义要播放的音频文件的URL
        NSURL* crashUrl = [[NSBundle mainBundle]
                           URLForResource:@"crash" withExtension:@"wav"];
        // 加载音效文件
        AudioServicesCreateSystemSoundID((__bridge CFURLRef)crashUrl , &crash);
        // 为crash播放完成绑定回调函数
        AudioServicesAddSystemSoundCompletion(crash, NULL, NULL,
            (void*)completionCallback ,NULL);
    }
    - (IBAction)play:(id)sender {
        //    // 播放crash代表的音频
        AudioServicesPlaySystemSound(crash);
        // 播放crash代表的音频,并控制设备震动
    //    AudioServicesPlayAlertSound(crash);
    }
    @end

  • 相关阅读:
    FusionMap 检测融合基因
    嵌合体序列
    seqtk 的安装和使用
    cutadapt 的安装与使用
    C语言简单选择排序
    C语言冒泡排序
    Java实现的各种排序算法(包括冒泡,快排等)
    C++实现顺序计算输入表达式的值
    java多线程有几种实现方法?线程之间如何同步
    java中==与equal()方法的区别
  • 原文地址:https://www.cnblogs.com/songxing10000/p/5074127.html
Copyright © 2011-2022 走看看