ios 短音效的使用

#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 短音效的使用的更多相关文章
- 整理:iOS 短信与电话事件的获取
整理:iOS 短信与电话事件的获取 background information: Core Telephony iOS 4.0 的官方 API 裡頭,多了一個叫做 Core Telephony ...
- cocos2dx 3.x simpleAudioEngine 长音效被众多短音效打断问题
假设先play长音效a,然后在a播放过程中反复执行:play短音效b,stop b,play b,... 则若a足够长,就会被b打断.而长音效被打断是最不可接受的. a之所以会被打断,推测原因是sim ...
- 美拍、秒拍中安卓、IOS短视频拍摄的一些关键技术
在发布<EasyDarwin开发出类似于美拍.秒拍的短视频拍摄SDK:EasyVideoRecorder>后,今天有人问到像美拍.秒拍这些短视频拍摄是怎么做到的,包括其中的一些功能,例如: ...
- 如何实现 iOS 短视频跨页面的无痕续播?
在一切皆可视频化的今天,短视频内容作为移动端产品新的促活点,受到了越来越多的重视与投入.盒马在秒播.卡顿率.播放成功率等基础优化之外,在用户使用体验上引入了无痕续播能力,提升用户观看视频内容的延续性. ...
- ios短信和电话--参考
调用打电话功能 [[UIApplicationsharedApplication] openURL:[NSURL URLWithString:@"tel://10086"]]; 调 ...
- 从350ms到80ms,揭秘阿里工程师 iOS 短视频优化方案
内容作为 App 产品新的促活点,受到了越来越多的重视与投入,短视频则是增加用户粘性.增加用户停留时长的一把利器.短视频的内容与体验直接关系到用户是否愿意长时停留,盒马也提出全链路内容视频化的规划,以 ...
- iOS 短视频开发总结二 AVCaptureSession
开始录制短视频 录制完成 根据项目需求,对视频URL进行处理 基本原理和方法已经完成,具体细节根据项目实际需求再处理
- iOS开发,音效的播放简单实现以及音效播放的简单封装
一.音效的播放简单实现 二.音效播放的封装 -- 封装思路:将生成的SystemSoundID存放到字典中,每次播放的时候从字典中取出对应的SystemSoundID,没有的话再创建 头文件中定义类方 ...
- iOS 短信分享 邮件分享
本地调用短信分享. #import "shareViewController.h" @interface shareViewController (){ UIAlertView * ...
随机推荐
- intellij idea 使用用到的问题
1.github error setting certificate verify locations使用github时报错,解决方法: git config --system http.sslcai ...
- android开发里跳过的坑——camera调用setDisplayOrientation设置预览显示旋转无效
问题原因,在surfaceview没有设置给camera之前调用了,所以,这个方法一定要在camera.setPreviewDisplay(surfaceHolder)这个之后,启动相机预览之前调用.
- [MFC] CString小用例
在实际项目中需要对数字转成的字符串进行格式处理, 如: 50.500000,需要转化成50.5; 1.00000,需要转化成1, 对于编号而言要求都是4位,不足前面补0. 如1转成0001,222转成 ...
- 选取第K大数的快速选择算法和注意事项
快速选择算法,是一种能在大致O(N)的时间内选取数组中第k大或者k小的算法.其基本思路与快速排序算法类似,也是分治的思想. 其实这个算法是个基础算法,但是不常用,所以今天编的时候错了POJ2388,才 ...
- Word文档转Markdown插件(Windows)
在线的转换,Shell脚本的转换都试过了,都没有原生Word文档集成的插件转换这么好用,并且没有Bug. 下载:http://www.writage.com/
- 【docker】启动docker连接数据库 出现FATAL: password authentucation failed for user "homestatead"问题
docker可以成功启动,启动命令如下: docker run -d -p : -v `pwd`/pgdata:/var/lib/postgresql/data -e POSTGRES_USER=ho ...
- Go -- RPC 之 Thrift
Thrift 简介: Thrift 是一款高性能.开源的 RPC 框架,产自 Facebook 后贡献给了 Apache,Thrift 囊括了整个 RPC 的上下游体系,自带序列化编译工具,因为 Th ...
- python遍历两个列表,若长度不等,用None填充
zip经常会遇到截断问题,如:a = [1,2,3], b = [4,5,6,7],则zip(a,b) = [(1, 4), (2, 5), (3, 6)] 可考虑使用map: map(lambda ...
- 使用RPi-Monitor监控、统计Guitar的运行状态
前言 之前发在ickey社区上的一系列文章: 犹抱琵琶半遮面,无人知是荔枝来--unboxing & interview 一.二.三 葡萄美酒夜光杯,巧妇难为无米炊--资料与社区 一支穿云箭, ...
- Android设置系统开机自己主动永不休眠
android4.2系统增永不休眠同一时候隐藏休眠选项 1. android\frameworks\base\packages\SettingsProvider\res\values\defaults ...