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

  • 相关阅读:
    LeetCode 81 Search in Rotated Sorted Array II(循环有序数组中的查找问题)
    LeetCode 80 Remove Duplicates from Sorted Array II(移除数组中出现两次以上的元素)
    LeetCode 79 Word Search(单词查找)
    LeetCode 78 Subsets (所有子集)
    LeetCode 77 Combinations(排列组合)
    LeetCode 50 Pow(x, n) (实现幂运算)
    LeetCode 49 Group Anagrams(字符串分组)
    LeetCode 48 Rotate Image(2D图像旋转问题)
    LeetCode 47 Permutations II(全排列)
    LeetCode 46 Permutations(全排列问题)
  • 原文地址:https://www.cnblogs.com/sayimba/p/5712009.html
Copyright © 2011-2022 走看看