zoukankan      html  css  js  c++  java
  • 系统提示音

    //
    //  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];
       
    }

  • 相关阅读:
    Python面试题目之Python函数默认参数陷阱
    Python面试题目之列表取值超出范围
    Python面试题目之打乱打乱有序列表
    Python面试题目之列表去重并维持原来顺序
    Python面试题目之字典排序
    前端学习笔记之JavaScript
    前端学习笔记之CSS后代选择器、子元素选择器、相邻兄弟选择器区别与详解
    前端学习笔记之CSS知识汇总
    SQL学习笔记八之ORM框架SQLAlchemy
    高效循环算法
  • 原文地址:https://www.cnblogs.com/sayimba/p/5712009.html
Copyright © 2011-2022 走看看