播放系统音效、自定义音效工具类
需求大致分为三种:
1.震动
2.系统音效(无需提供音频文件)
3.自定义音效(需提供音频文件)
我的工具类的封装:
//
//  WQPlaySound.h
//  WQSound
//
//  Created by 念茜 on 12-7-20.
//  Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
//#import <UIKit/UIKit.h>
#import <AudioToolbox/AudioToolbox.h>@interface WQPlaySound : NSObject
{SystemSoundID soundID;
}/***   @brief 为播放震动效果初始化**    @return    self*/
-(id)initForPlayingVibrate;/*** @brief 为播放系统音效初始化(无需提供音频文件)**  @param resourceName 系统音效名称*    @param type 系统音效类型**   @return    self*/
-(id)initForPlayingSystemSoundEffectWith:(NSString *)resourceName ofType:(NSString *)type;/***  @brief 为播放特定的音频文件初始化(需提供音频文件)**  @param filename 音频文件名(加在工程中)**   @return    self*/
-(id)initForPlayingSoundEffectWith:(NSString *)filename;/***    @brief 播放音效*/
-(void)play;@end
//
//  WQPlaySound.m
//  WQSound
//
//  Created by 念茜 on 12-7-20.
//  Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
//#import "WQPlaySound.h"@implementation WQPlaySound-(id)initForPlayingVibrate
{self = [super init];if (self) {soundID = kSystemSoundID_Vibrate;}return self;
}-(id)initForPlayingSystemSoundEffectWith:(NSString *)resourceName ofType:(NSString *)type
{self = [super init];if (self) {NSString *path = [[NSBundle bundleWithIdentifier:@"com.apple.UIKit"] pathForResource:resourceName ofType:type];if (path) {SystemSoundID theSoundID;OSStatus error =  AudioServicesCreateSystemSoundID((__bridge CFURLRef)[NSURL fileURLWithPath:path], &theSoundID);if (error == kAudioServicesNoError) {soundID = theSoundID;}else {NSLog(@"Failed to create sound ");}}}return self;
}-(id)initForPlayingSoundEffectWith:(NSString *)filename
{self = [super init];if (self) {NSURL *fileURL = [[NSBundle mainBundle] URLForResource:filename withExtension:nil];if (fileURL != nil){SystemSoundID theSoundID;OSStatus error = AudioServicesCreateSystemSoundID((__bridge CFURLRef)fileURL, &theSoundID);if (error == kAudioServicesNoError){soundID = theSoundID;}else {NSLog(@"Failed to create sound ");}}}return self;
}-(void)play
{AudioServicesPlaySystemSound(soundID);
}-(void)dealloc
{ AudioServicesDisposeSystemSoundID(soundID);
}
@end

调用方法步骤:
1.加入AudioToolbox.framework到工程中
2.调用WQPlaySound工具类

2.1震动

        WQPlaySound *sound = [[WQPlaySound alloc]initForPlayingVibrate];[sound play];

2.2系统音效,以Tock为例

    WQPlaySound *sound = [[WQPlaySound alloc]initForPlayingSystemSoundEffectWith:@"Tock" ofType:@"aiff"];[sound play];

2.3自定义音效,将tap.aif音频文件加入到工程

    WQPlaySound *sound = [[WQPlaySound alloc]initForPlayingSoundEffectWith:@"tap.aif"];[sound play];

tap.aif音频文件样例下载点击

欢迎挑错,改进

iOS开发——播放系统音效、自定义音效相关推荐

  1. IOS开发调用系统相机和打开闪光灯

    IOS开发调用系统相机和打开闪光灯      今天给大家分享一下如何调用iphone的拍照功能和打开闪光灯,有些代码我也不太理解,很多是在网上借鉴其他人的.IOS有两种的拍照和视频的方式:1.直接使用 ...

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

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

  3. ios开发调用系统自带的分享

    1.一般情况下提到分享,我们会想到去集成某些第三方的框架,例如很多第三方分享的集合例如友盟的,集成效果如下 这里只涉及到了常用的新浪.微信.及qq: 分享功能:三个平台都比较宽松,只有有appid,都 ...

  4. iOS开发之系统发短信功能详解

    iOS调用系统的发短信功能可以分为两种:1,程序外调用系统发短信.2,程序内调用系统发短信.第二种的好处是用户发短信之后还可以回到app.这对app来说非常重要. 程序外调用系统发短信 这个方法其实很 ...

  5. IOS开发笔记15-自定义类

    转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/53710519 本文出自:[顾林海的博客] 前言 创建自定义类时会生成两 ...

  6. ((ios开发学习笔记 十一))自定义TableViewCell 的方式实现自定义TableView(带源码)...

    实现的效果 实现过程 Step One 创建 自定义TableViewCell (接口部分)  (类实现部分)  xib 实现部分 注意: 下面三个设置 1 设置xib文件的class 2设置Iden ...

  7. iOS 开发AVFoundation系统原生二维码扫描实现

    /* 先在项目中导入AVFoundation.framework框架 */ #import <UIKit/UIKit.h> #import <AVFoundation/AVFound ...

  8. iOS开发------获取系统联系人(AddressBook篇)

    AddressBook是Apple提供给我们获取系统联系人的一个很方便类库,与其说方便,其实刚开始还是比较崩溃的,从开发文档来看,它还是偏向于C语言,并且不在ARC的控制之下,虽然在iOS9.0之后会 ...

  9. IOS开发UI篇之──自定义加载等待框(MBProgressHUD)

    这里介绍一下网友开源的MBProgressHUD类,实现等待框, 一.网上下载  MBProgessHUD 类文件,直接导入到工程即可 二.示例分析 在我的工程中示例如下: 1)在ShowImageV ...

最新文章

  1. React+Redux开发实录(一)搭建工程脚手架
  2. sock_dgram 可以用listen吗_洗脸皂可以天天用吗
  3. Delphi (Library Path Browsing Path)
  4. python语言入门与精通-终于懂得python从入门到精通教程
  5. Java、Scala和Go语言多线程并发对比测试
  6. Apache Maven ToolChains的使用
  7. YznCMS 后台开发框架
  8. 马斯克称面临巨大通胀压力 暗示特斯拉可能涨价
  9. P2P之UDP穿透NAT的原理与实现
  10. 「代码随想录」121. 买卖股票的最佳时机【贪心】【动态规划】力扣/leetcode详解
  11. AE/PR/FCPX超强视觉特效插件包FxFactory
  12. Abp Quartz配置Sqlite
  13. OI队的土豆树(C++)
  14. android平板能玩吃鸡吗,刺激战场用什么平板好 平板吃鸡配置推荐
  15. 交互设计期末大作业(Photoshop期末作业)
  16. 动态创建表,并批量入库表数据(字段在程序运行之前未知)
  17. Windows+Linux等双系统的卸载
  18. python高校学生田径会信息管理系统
  19. 国家互联网信息办公室:发布关于《区块链信息服务管理规定(征求意见稿)》
  20. 【Vue3】源码解析

热门文章

  1. 经典好书:DSP嵌入式常用模块与综合系统设计实例精讲
  2. 多伦多大学好吗_大家对多伦多大学有什么评价?
  3. 【HAN】代码逐句理解三
  4. Linux Deepin蓝牙更新内核后无法使用的问题的各种方法尝试-service\heitool\hciconfig\blueman
  5. 成都电子科技大学计算机尹佳,电子科技大学成都研究院
  6. JAVA游戏土行孙_挖掘机的三种形态《非人学园》土行孙快速上手指南
  7. PDF文件编辑工具 V9.0.01
  8. 阿里云ECS部署Nginx配置域名访问
  9. sci论文宝典,科研入门,如何进行科研
  10. 2022年度总结:拒绝无效努力,实现破圈成长。