zoukankan      html  css  js  c++  java
  • iOS开发-音效的使用

    音频我们简易的分为两种,既音效和音频。

    1.音效:是有声音制造而成,主要用于加强对于对声音的处理。在用户使用app的时候加入音效,无疑是用户体验的加分项。

    2.音乐:音乐的播放时间一般比较长,比如游戏中无限循环的背景音乐。

    我们在使用音频的时候需要用到两个框架

    1.AVFoundation.framework

    2.AudioToolbox.framework

    由于AVFoundation比较强大这里就先介绍一下AudioToolbox框架

    音效播放常见函数总结
    //加载音效文件
    AudioServicesCreateSystemSoundID(CFURLRef inFileURL, SystemSoundID *outSystemSoundID)
     
    //释放音效资源
    AudioServicesDisposeSystemSoundID(SystemSoundID inSystemSoundID)
     
    //播放音效
    AudioServicesPlaySystemSound(SystemSoundID inSystemSoundID)

    //播放音效带点震动

    AudioServicesPlayAlertSound(SystemSoundID inSystemSoundID)

    使用时需要注意,为了到达省电的目的,硬件的解码只能对一个音频文件进行解码。

    下面来介绍一下AVFoundation框架

    音乐播放用到一个叫做AVAudioPlayer的类
    AVAudioPlayer常用方法
    //加载音乐文件
    - (id)initWithContentsOfURL:(NSURL *)url error:(NSError **)outError;
    - (id)initWithData:(NSData *)data error:(NSError **)outError;
     
    //准备播放(缓冲,提高播放的流畅性)
    - (BOOL)prepareToPlay;

    //播放(异步播放)

    - (BOOL)play;

    //暂停
    - (void)pause;
     
    //停止
    - (void)stop;
     
    //是否正在播放
    @property(readonly, getter=isPlaying) BOOL playing;
     
    //时长
    @property(readonly) NSTimeInterval duration;
     
    //当前的播放位置
    @property NSTimeInterval currentTime;
     
    //播放次数(-1代表无限循环播放,其他代表播放numberOfLoops+1次)
    @property NSInteger numberOfLoops;
     
    //音量
    @property float volume;

    //是否允许更改速率

    @property BOOL enableRate;

    //播放速率(1是正常速率,0.5是一般速率,2是双倍速率)
    @property float rate;

    //有多少个声道

    @property(readonly) NSUInteger numberOfChannels;

    //声道(-1是左声道,1是右声道,0是中间)
    @property float pan;
     
    //是否允许测量音量
    @property(getter=isMeteringEnabled) BOOL meteringEnabled;
     
    //更新测量值
    - (void)updateMeters;

    //获得当前的平均音量

    - (float)averagePowerForChannel:(NSUInteger)channelNumber;

    AVFoundation.framework和AudioToolbox.framework的常用方法就是这些了

    开发中具体怎样使用这两个框架比较好,就仁者见仁,智者见智了。

    随着时代的前进,OC成为历史只是时间问题了。面对swift的强势来袭,起初国内的大牛们只是持观望状态,

    但是随着swift2.0的到来,这种趋势已经势不可挡了。最为一名优秀的开发者,同时掌握多个开发语言是刚需。

    最为一名优秀的iOS开发者,同时掌握OC和swift也是刚需。

  • 相关阅读:
    如何使用Arrays工具类操作数组
    Java 内存模型详解
    HashSet源码分析:JDK源码系列
    在ASP.NET Core中用HttpClient(六)——ASP.NET Core中使用HttpClientFactory
    在ASP.NET Core中用HttpClient(五)——通过CancellationToken取消HTTP请求
    在ASP.NET Core中用HttpClient(四)——提高性能和优化内存
    ASP.NET Core与Redis搭建一个简易分布式缓存
    在ASP.NET Core中用HttpClient(三)——发送HTTP PATCH请求
    在ASP.NET Core中用HttpClient(二)——发送POST, PUT和DELETE请求
    在ASP.NET Core中用HttpClient(一)——获取数据和内容
  • 原文地址:https://www.cnblogs.com/wanglekai/p/5366307.html
Copyright © 2011-2022 走看看