在ios开发中,有时候我们需要频繁播放某种提示声音,比如微博刷新提示音、QQ消息提示音等,对于这些短小且需要频繁播放的音频,最好将其加入到系统声音(system sound)里。

注意:
♡♥
需要播放的音频文件不能超过30秒
必须是IMA/ADPCM格式[in linear PCM or IMA4(IMA/ADPCM) format]
必须是.caf .aif .wav文件

1、自定义系统声音
// 要播放的音频文件地址
NSString *urlPath = [[NSBundle mainBundle] pathForResource:@"end_refreshing" ofType:@"wav"];

NSURL *url = [NSURL fileURLWithPath:urlPath];

// 声明需要播放的音频文件ID[unsigned long]
SystemSoundID ID;

// 创建系统声音,同时返回一个ID
AudioServicesCreateSystemSoundID((__bridge CFURLRef)(url), &ID);

2、根据自定义系统声音时传入的ID,播放自定义系统声音

// 根据ID播放自定义系统声音
AudioServicesPlaySystemSound(ID);

3、经过以上2步就可以进行简单的自定义系统声音并播放了,但是别忘记了,在ARC中,C语言的函数需要是手动管理内存,所以在不需要该声音时,调用方法释放该音频

// 根据ID释放自定义系统声音
AudioServicesDisposeSystemSoundID(ID);

4、有时候我们需要在完成播放的时候做一些事情,比如继续播放下一个音频或者提示用户,需要用到函数[如果需要用到此步骤,需要将该方法写在释放ID(步骤3)之前]

// 播放完成后执行的操作
/*
*参数说明:
* 1、刚刚播放完成自定义系统声音的ID
* 2、回调函数(playFinished)执行的run Loop,NULL表示main run loop
* 3、回调函数执行所在run loop的模式,NULL表示默认的run loop mode
* 4、需要回调的函数
* 5、传入的参数, 此参数会被传入回调函数里
*/
AudioServicesAddSystemSoundCompletion(ID, NULL, NULL, &playFinished, (__bridge void *)(self));
}

@implementation与@interface外部自定义一个函数,然后传入这个函数名的地址

void playFinished(SystemSoundID ssID, void* clientData)
{
unsigned long ID = ssID; // ssID 不能直接作为参数打印出来,需要中转一次

NSLog(@"播放完成-传入ID为-%lu,传入的参数为%@", ID, clientData);
  /*在此处填写你要在播放完成后执行的代码*/
}

这样就可以实现播放完成后调用预先定义好的函数playfinished(),继续做一些你希望的事情,但是别忘了,ARC中C语言函数需要自己管理内存,所以这里,我们需要回调完成后移除刚刚添加的操作

// 移除完成后执行的函数
AudioServicesRemoveSystemSoundCompletion(ID);

5、完成以上步骤就可以进行简单的通过自定义系统声音来播放简单且频繁的音频文件了。

6、哦,还有震动~ 一句话

// 播放系统预定义的音效,kSystemSoundID_Vibrate代表震动,如果有其它需求可以点进头文件里去找相应的提示音类型
AudioServicesPlayAlertSound(kSystemSoundID_Vibrate);

--------------------------------------------------------------------------------------------
  1. NSString *path = [NSString stringWithFormat:@"/System/Library/Audio/UISounds/%@.%@",soundName,soundType];
  2. //[[NSBundle bundleWithIdentifier:@"com.apple.UIKit" ]pathForResource:soundName ofType:soundType];//得到苹果框架资源UIKit.framework ,从中取出所要播放的系统声音的路径
  3. //[[NSBundle mainBundle] URLForResource: @"tap" withExtension: @"aif"];  获取自定义的声音

apple系统默认声音名称说明:(此说明来自于http://bbs.weiphone.com/read-htm-tid-6262661.html)

1.声音格式是MP3或m4r的需要转成caf格式(可先转成aif , aiff,然后修改后缀)
2.路径在/System/Library/Audio/UISounds 里,需要更改的可以根据以下列表进行替换
3详细列表:
信息 
ReceivedMessage.caf--收到信息,仅在短信界面打开时播放。 
sms-received1.caf-------三全音 
sms-received2.caf-------管钟琴 
sms-received3.caf-------玻璃 
sms-received4.caf-------圆号 
sms-received5.caf-------铃声 
sms-received6.caf-------电子乐 
SentMessage.caf--------发送信息

邮件 
mail-sent.caf----发送邮件 
new-mail.caf-----收到新邮件

电话 
dtmf-0.caf----------拨号面板0按键 
dtmf-1.caf----------拨号面板1按键 
dtmf-2.caf----------拨号面板2按键 
dtmf-3.caf----------拨号面板3按键 
dtmf-4.caf----------拨号面板4按键 
dtmf-5.caf----------拨号面板5按键 
dtmf-6.caf----------拨号面板6按键 
dtmf-7.caf----------拨号面板7按键 
dtmf-8.caf----------拨号面板8按键 
dtmf-9.caf----------拨号面板9按键 
dtmf-pound.caf---拨号面板#按键 
dtmf-star.caf------拨号面板*按键 
Voicemail.caf-----新语音邮件

输入设备声音提示 
Tock.caf-----------------------点击键盘 
begin_record.caf-----------开始录音 
begin_video_record.caf--开始录像 
photoShutter.caf------------快门声 
end_record.caf--------------结束录音 
end_video_record.caf-----结束录像

其他 
beep-beep.caf--充电、注销及连接电脑 
lock.caf------------锁定手机 
shake.caf---------“这个还没搞清楚” 
unlock.caf--------滑动解锁 
low_power.caf--低电量提示

语音控制 
jbl_ambiguous.caf--找到多个匹配 
jbl_begin.caf------等待用户的输入 
jbl_cancel.caf-----取消 
jbl_confirm.caf----执行 
jbl_no_match.caf---没有找到匹配

日历 
alarm.caf--日历提醒

iPod Touch 1G 
sq_alarm.caf 
sq_beep-beep.caf 
sq_lock.caf 
sq_tock.caf

ios 播放声音 播放震动相关推荐

  1. ios 播放声音和震动

    使用AudioServicesPlaySystemSound 这个接口来进行声音和震动的播放, 当然需要在工程中加入AudioToolBox.framework 1. 播放震动 AudioServic ...

  2. iOS 音频播放,录音,视频播放,拍照,视频录制

    iOS开发系列--音频播放.录音.视频播放.拍照.视频录制 2014-12-26 09:15 by KenshinCui, 149110 阅读, 67 评论, 收藏, 编辑 --iOS多媒体 概览 随 ...

  3. 视频直播APP源码开发iOS音频播放流程

    视频直播APP源码开发iOS音频播放流程 概览 随着移动互联网的发展,如今的手机早已不是打电话.发短信那么简单了,播放音乐.视频.录音.拍照等都是很常用的功能.在iOS中对于多媒体的支持是非常强大的, ...

  4. iOS音频播放(一):概述

    (本文转自码农人生) 前言 从事音乐相关的app开发也已经有一段时日了,在这过程中app的播放器几经修改,我也因此对于iOS下的音频播放实现有了一定的研究.写这个 系列的博客目的一方面希望能够抛砖引玉 ...

  5. iOS音频播放 (二):AudioSession 转

    原文出处 :http://msching.github.io/blog/2014/07/08/audio-in-ios-2/ 前言 本篇为<iOS音频播放>系列的第二篇. 在实施前一篇中所 ...

  6. iOS音频播放 (一):概述 转

    2019独角兽企业重金招聘Python工程师标准>>> 基础 先来简单了解一下一些基础的音频知识. 目前我们在计算机上进行音频播放都需要依赖于音频文件,音频文件的生成过程是将声音信息 ...

  7. iOS音频播放之AudioQueue(一):播放本地音乐

    AudioQueue简介 AudioStreamer说明 AudioQueue详解 AudioQueue工作原理 AudioQueue主要接口 AudioQueueNewOutput AudioQue ...

  8. iOS开发——播放系统音效、自定义音效

    播放系统音效.自定义音效工具类 需求大致分为三种: 1.震动 2.系统音效(无需提供音频文件) 3.自定义音效(需提供音频文件) 我的工具类的封装: // // WQPlaySound.h // WQ ...

  9. iOS 开发 - 播放器Demo开发记录

    iOS 开发 - 播放器Demo开发记录 标签: ios 2014-12-22 14:14 518人阅读 评论(0) 收藏 举报  分类: Mac OS X(50)  版权声明:本文为博主原创文章,未 ...

最新文章

  1. 现实世界充满了bug_为啥程序会有bug?
  2. js-权威指南学习笔记18
  3. HDUOJ-----2175取(m堆)石子游戏
  4. oracle服务端用sql查看连接到数据库的IP
  5. RandomForest:随机森林
  6. jQuery 9 相对选择器
  7. 【Spring-AOP-1】AOP相关概念
  8. 用CSS3 vh 简单实现DIV全屏居中
  9. MQTT在线测试网站
  10. 第三次IT浪潮将使白领收入成倍不均-信息革命
  11. VSS 数据库地址批量更改器 - VSS Database Changer
  12. 5028: 小Z的加油店(线段树)
  13. 搭建springmvc项目遇到的问题
  14. 自定义scrollview右侧的滑动条
  15. openproj ubuntu安装及其输入中文变方块乱码解决
  16. FFmpeg 2 - ffplay、ffprobe、ffmpeg 命令使用
  17. 收藏了8年的PHP优秀资源,都给你整理好了
  18. scratch编程记忆力小游戏
  19. 轻仓的贵金属白银今日走势分析
  20. jupyter更改默认浏览器的方法

热门文章

  1. #微信小程序#如何输出一个换行符?
  2. elecv2p和手机的圈x配合使用
  3. python微信好友签名
  4. vooc充电原理_VOOC闪充原理大揭秘! OPPO为用户跟细节杠上了
  5. Error: PostCSS plugin postcss-discard-comments requires PostCSS 8
  6. ecshop下启用QQ在线服务,并能实时更新QQ在线状态
  7. 小爱智能音箱使用体验:外观篇
  8. 求三个数中的最大数 (分别考虑整数、双精度数、长整数)【函数的重载】
  9. 新政问答|个税又出新消息了?十问十答助你解析
  10. 备忘录模式 java 作用,使用备忘录模式实现草稿箱功能