当前位置: 移动技术网 > IT编程>移动开发>IOS > iOS开发 AudioServices(音效播放)的使用

iOS开发 AudioServices(音效播放)的使用

2018年09月13日  | 移动技术网IT编程  | 我要评论

恶龙军团优等生,龟背竹图片,上海电视大学嘉定分校

一.介绍

audiotoolbox.framework是一套基于c语言的框架,使用它来播放音效其本质是将短音频注册到声音服务(system sound service).system sound service是一种简单、底层的声音播放服务,但是它本身也存在着一些限制:
音频播放时间不能超过30s数据必须是pcm或者ima4格式音频文件必须打包成.caf、.aif、.wav中的一种(注意这是官方文档的说法,实际测试发现一些.mp3也可以播放)

二.使用

使用system sound service 播放音效的步骤如下:

调用audioservicescreatesystemsoundid(cfurlref infileurl, systemsoundid* outsystemsoundid)函数获得系统声音id如果需要监听播放完成操作,则使用audioservicesaddsystemsoundcompletion(systemsoundid insystemsoundid, cfrunloopref inrunloop, cfstringref inrunloopmode, audioservicessystemsoundcompletionproc incompletionroutine, void* inclientdata)方法注册回调函数。调用audioservicesplaysystemsound(systemsoundid insystemsoundid)或者audioservicesplayalertsound(systemsoundid insystemsoundid)方法播放音效(后者带有震动效果)

下面是一个简单的示例程序:

/**
 *  播放完成回调函数
 *
 *  @param soundid    系统声音id
 *  @param clientdata 回调时传递的数据
 */
void soundcompletecallback(systemsoundid soundid,void * clientdata)
{
    nslog(@"播放完成...");
}

/**
 *  播放音效文件
 *
 *  @param name 音频文件名称
 */
- (void)playsoundeffect:(nsstring *)name
{
    nsstring *audiofile = [[nsbundle mainbundle] pathforresource:name oftype:nil];
    nsurl *fileurl = [nsurl fileurlwithpath:audiofile];
    //1.获得系统声音id
    systemsoundid soundid = 0;
    /**
     * infileurl:音频文件url
     * outsystemsoundid:声音id(此函数会将音效文件加入到系统音频服务中并返回一个长整形id)
     */
    audioservicescreatesystemsoundid((__bridge cfurlref)(fileurl), &soundid);
    //如果需要在播放完之后执行某些操作,可以调用如下方法注册一个播放完成回调函数
    audioservicesaddsystemsoundcompletion(soundid, null, null, soundcompletecallback, null);
    //2.播放音频
    audioservicesplaysystemsound(soundid);//播放音效
    //audioservicesplayalertsound(soundid);//播放音效并震动
}

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

  • ios uicollectionview实现横向滚动

    现在使用卡片效果的app很多,之前公司让实现一种卡片效果,就写了一篇关于实现卡片的文章。文章最后附有demo实现上我选择了使用uicollectionview ... [阅读全文]
  • iOS UICollectionView实现横向滑动

    本文实例为大家分享了ios uicollectionview实现横向滑动的具体代码,供大家参考,具体内容如下uicollectionview的横向滚动,目前我使... [阅读全文]
  • iOS13适配深色模式(Dark Mode)的实现

    iOS13适配深色模式(Dark Mode)的实现

    好像大概也许是一年前, mac os系统发布了深色模式外观, 看着挺刺激, 时至今日用着也还挺爽的终于, 随着iphone11等新手机的发售, ios 13系统... [阅读全文]
  • ios 使用xcode11 新建项目工程的步骤详解

    ios 使用xcode11 新建项目工程的步骤详解

    xcode11新建项目工程,新增了scenedelegate这个类,转而将原appdelegate负责的对ui生命周期的处理担子接了过来。故此可以理解为:ios... [阅读全文]
  • iOS实现转盘效果

    本文实例为大家分享了ios实现转盘效果的具体代码,供大家参考,具体内容如下demo下载地址: ios转盘效果功能:实现了常用的ios转盘效果,轮盘抽奖效果的实现... [阅读全文]
  • iOS开发实现转盘功能

    本文实例为大家分享了ios实现转盘功能的具体代码,供大家参考,具体内容如下今天给同学们讲解一下一个转盘选号的功能,直接上代码直接看viewcontroller#... [阅读全文]
  • iOS实现轮盘动态效果

    本文实例为大家分享了ios实现轮盘动态效果的具体代码,供大家参考,具体内容如下一个常用的绘图,主要用来打分之类的动画,效果如下。主要是ios的绘图和动画,本来想... [阅读全文]
  • iOS实现九宫格连线手势解锁

    本文实例为大家分享了ios实现九宫格连线手势解锁的具体代码,供大家参考,具体内容如下demo下载地址:效果图:核心代码://// clockview.m// 手... [阅读全文]
  • iOS实现卡片堆叠效果

    本文实例为大家分享了ios实现卡片堆叠效果的具体代码,供大家参考,具体内容如下如图,这就是最终效果。去年安卓5.0发布的时候,当我看到安卓全新的material... [阅读全文]
  • iOS利用余弦函数实现卡片浏览工具

    iOS利用余弦函数实现卡片浏览工具

    本文实例为大家分享了ios利用余弦函数实现卡片浏览工具的具体代码,供大家参考,具体内容如下一、实现效果通过拖拽屏幕实现卡片移动,左右两侧的卡片随着拖动变小,中间... [阅读全文]
验证码:
移动技术网