1.通用短音效ID的获取
#import <Foundation/Foundation.h>

@interface MJAudioTool : NSObject

/**
* 播放音效
*
* @param filename 音效文件名
*/
+ (void)playSound:(NSString *)filename; /**
* 销毁音效
*
* @param filename 音效文件名
*/
+ (void)disposeSound:(NSString *)filename;
@end
#import "MJAudioTool.h"
#import <AVFoundation/AVFoundation.h> @implementation MJAudioTool // 字典: filename作为key, soundID作为value
// 存放所有的音频ID
static NSMutableDictionary *_soundIDDict;
+ (void)initialize
{
_soundIDDict = [NSMutableDictionary dictionary];
} + (void)playSound:(NSString *)filename
{
if (!filename) return; // 1.从字典中取出soundID
SystemSoundID soundID = [_soundIDDict[filename] unsignedLongValue];
if (!soundID) { // 创建
// 加载音效文件
NSURL *url = [[NSBundle mainBundle] URLForResource:filename withExtension:nil]; if (!url) return; // 创建音效ID
AudioServicesCreateSystemSoundID((__bridge CFURLRef)url, &soundID); // 放入字典
_soundIDDict[filename] = @(soundID);
} // 2.播放
AudioServicesPlaySystemSound(soundID);
} + (void)disposeSound:(NSString *)filename
{
if (!filename) return; SystemSoundID soundID = [_soundIDDict[filename] unsignedLongValue];
if (soundID) {
// 销毁音效ID
AudioServicesDisposeSystemSoundID(soundID); // 从字典中移除
[_soundIDDict removeObjectForKey:filename];
}
} @end

2.通用方法的使用

[MJAudioTool playSound:@"buyao.wav"];

ios 短音效的使用的更多相关文章

  1. 整理:iOS 短信与电话事件的获取

    整理:iOS 短信与电话事件的获取   background information: Core Telephony iOS 4.0 的官方 API 裡頭,多了一個叫做 Core Telephony  ...

  2. cocos2dx 3.x simpleAudioEngine 长音效被众多短音效打断问题

    假设先play长音效a,然后在a播放过程中反复执行:play短音效b,stop b,play b,... 则若a足够长,就会被b打断.而长音效被打断是最不可接受的. a之所以会被打断,推测原因是sim ...

  3. 美拍、秒拍中安卓、IOS短视频拍摄的一些关键技术

    在发布<EasyDarwin开发出类似于美拍.秒拍的短视频拍摄SDK:EasyVideoRecorder>后,今天有人问到像美拍.秒拍这些短视频拍摄是怎么做到的,包括其中的一些功能,例如: ...

  4. 如何实现 iOS 短视频跨页面的无痕续播?

    在一切皆可视频化的今天,短视频内容作为移动端产品新的促活点,受到了越来越多的重视与投入.盒马在秒播.卡顿率.播放成功率等基础优化之外,在用户使用体验上引入了无痕续播能力,提升用户观看视频内容的延续性. ...

  5. ios短信和电话--参考

    调用打电话功能 [[UIApplicationsharedApplication] openURL:[NSURL URLWithString:@"tel://10086"]]; 调 ...

  6. 从350ms到80ms,揭秘阿里工程师 iOS 短视频优化方案

    内容作为 App 产品新的促活点,受到了越来越多的重视与投入,短视频则是增加用户粘性.增加用户停留时长的一把利器.短视频的内容与体验直接关系到用户是否愿意长时停留,盒马也提出全链路内容视频化的规划,以 ...

  7. iOS 短视频开发总结二 AVCaptureSession

    开始录制短视频 录制完成 根据项目需求,对视频URL进行处理 基本原理和方法已经完成,具体细节根据项目实际需求再处理

  8. iOS开发,音效的播放简单实现以及音效播放的简单封装

    一.音效的播放简单实现 二.音效播放的封装 -- 封装思路:将生成的SystemSoundID存放到字典中,每次播放的时候从字典中取出对应的SystemSoundID,没有的话再创建 头文件中定义类方 ...

  9. iOS 短信分享 邮件分享

    本地调用短信分享. #import "shareViewController.h" @interface shareViewController (){ UIAlertView * ...

随机推荐

  1. tarkjan求无向图割点模板

    #include<bits/stdc++.h> using namespace std; typedef long long ll; int n,m; ; ; struct node { ...

  2. idea下springboot打包成jar包和war包,并且可以在外部tomcat下运行访问到

    接着上一章走呗:http://www.cnblogs.com/sxdcgaq8080/p/7712874.html 然后声明一点,下面打包的过程中,scope一直都是使用默认的范围 <!--用于 ...

  3. python中单引号,双引号,三引号的比较 转载

    本文转载自http://blog.sina.com.cn/s/blog_6be8928401017lwy.html 先说1双引号与3个双引号的区别,双引号所表示的字 符串通常要写成一行 如: s1 = ...

  4. R语言入门视频笔记--8--数据框

    一.数据框 使用data.frame函数生成数据框 x <- c(20122014101:20122014128) y <- rnorm(28,85,18) #生成28个平均数为85,方差 ...

  5. Laravel 5.1 报错:[App\Http\Requests\Request] is not instantiable

    Laravel 5.1 报错:[App\Http\Requests\Request] is not instantiable 错误提示: Whoops, looks like something we ...

  6. grafana 安装 和 Nginx 、EL 联调

    https://blog.csdn.net/u010735147/article/details/80943593

  7. CentOS 7.3 源码安装 OpenVAS 9

    https://my.oschina.net/u/2613235/blog/1583198

  8. HDU 1394 线段树求逆序对

    Minimum Inversion Number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java ...

  9. 洛谷——P1057 传球游戏

    P1057 传球游戏 题目描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着同学们一起做传球游戏. 游戏规则是这样的:n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹 ...

  10. 论DATASNAP结合FIREDAC的使用方法

    论DATASNAP结合FIREDAC的使用方法 自DELPHI XE5开始引入FIREDAC数据引擎以来,FIREDAC就正式成为了官方的数据引擎.一直到XE10.1 UPDATE1,据笔者观察,FI ...