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

  • 相关阅读:
    UVA12125 March of the Penguins (最大流+拆点)
    UVA 1317 Concert Hall Scheduling(最小费用最大流)
    UVA10249 The Grand Dinner(最大流)
    UVA1349 Optimal Bus Route Design(KM最佳完美匹配)
    UVA1212 Duopoly(最大流最小割)
    UVA1395 Slim Span(kruskal)
    UVA1045 The Great Wall Game(二分图最佳匹配)
    UVA12168 Cat vs. Dog( 二分图最大独立集)
    hdu3488Tour(KM最佳完美匹配)
    UVA1345 Jamie's Contact Groups(最大流+二分)
  • 原文地址:https://www.cnblogs.com/sayimba/p/5712009.html
Copyright © 2011-2022 走看看