//
// RootViewController.m
#import "RootViewController.h"
#import <AudioToolbox/AudioToolbox.h>
@interface RootViewController ()
@end
@implementation RootViewController
-(void)createUI
{
UIImageView * imageView = [[UIImageView alloc]initWithFrame:[[UIScreen mainScreen] bounds]];
imageView.image = [UIImage imageNamed:@"cat_angry0001.jpg"];
//开启imageView的交互权限
imageView.userInteractionEnabled = YES;
//为imageView添加点击手势
UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapAction:)];
tap.numberOfTapsRequired = 1;
tap.numberOfTouchesRequired = 1;
[imageView addGestureRecognizer:tap];
[self.view addSubview:imageView];
}
//系统提示音播放结束的方法
//这个方法必须是C语言函数
//这个方法的返回值类型以及参数类型都是固定的
void finishSound (SystemSoundID SID,void * info)
{
//向系统注销刚刚注册的SoundID
AudioServicesDisposeSystemSoundID(SID);
NSLog(@"提示音播放结束");
}
-(void)tapAction:(UITapGestureRecognizer *)tap
{
//添加系统提示 需要导入AudioToolbox.framework 并且导入这个头文件
//系统提示音设置到的所有方法都是AudioServices开头
//这种方法创建的音频有一定的局限性
/*
1、音频的播放时间小于30s
2、播放的音频格式:wav aif caf格式
3、只要触发该音频 就会立即播放
4、这种样式的音频不能暂停也不能循环播放
*/
//<1>获取音频路径
NSString * path = [[NSBundle mainBundle] pathForResource:@"sound" ofType:@"wav"];
//<2>本地路径转化成NSURL
//转化本地地址
NSURL * url = [NSURL fileURLWithPath:path];
//转化网络地址
// NSURL * url = [NSURL URLWithString:网络地址];
//<3>开始创建系统音频
//1、CFURLRef 与 NSURL原理相同 只是表现的形式不同而已 这两种类型可以相互转换
//2、创建系统提示音 必须向系统注册一个系统音频ID号 如果不注册的话 音频播放不成功
SystemSoundID SID = 0;
AudioServicesCreateSystemSoundID((CFURLRef) url, &SID);
//<4>播放系统提示音
AudioServicesPlaySystemSound(SID);
//<5>音频播放结束以后会触发一个方法
AudioServicesAddSystemSoundCompletion(SID, NULL, NULL,finishSound, NULL);
}
- (void)viewDidLoad
{
[super viewDidLoad];
[self createUI];
}
![]()