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

  • 相关阅读:
    多任务处理:控制默认行为
    多任务处理:管理调度Executor 接口
    多任务处理:服务器协议
    自己来做服务级的木马后门
    IBM ThinkPad
    韩国地名词汇/ 한국지명어휘(注册跑跑韩服有用)1
    EXE程序的自删除实现
    IBM ThinkPad
    EXE程序的自删除实现
    用VBScript实现对Windows注册表的修改
  • 原文地址:https://www.cnblogs.com/songxing10000/p/5074127.html
Copyright © 2011-2022 走看看