iOS 9音频应用播放音频之控制播放速度

iOS 9音频控制播放速度

iOS9音频文件在播放时是以一定的速度进行的。这个速度是可以进行更改的,从而实现iOS9音频文件的快速播放和慢速播放功能。要实现iOS9播放速度的更改需要使用AVAudioPlayer类中的rate属性实现。其语法形式如下:

  • var rate: Float

其中,该属性设置的值为浮点类型,范围在0.5到2.0之间。如果该属性的值设置为1.0表示正常播放,它也是默认值。2.0表示以最快的速度进行播放,0.5表示以最慢的速度进行播放。

注意:如果开发者要iOS 9音频实现播放速度的改变则必须要对enableRate属性进行设置,该属性的功能是否允许改变播放速度。其语法形式如下:

  • var enableRate: Bool

其中,该属性设置的值为布尔类型。将值为true时,表示允许改变播放速度,反之,则不运行改变播放速度。

【示例2-6】以下将以第一个iOS 9音频实例为基础,让用户可以控制音频文件的播放速度。具体的操作步骤如下:

(1将主视图中的Rate Text Field文本框与插座变量rateTextField进行关联。

(2将主视图中的Rate Text Field文本框与动作setRate进行关联。

(3右击主视图中的Rate Text Field文本框,在弹出的Rate Text Field对话框,如图2.27所示。

(4选择Sent Events下的Did End On Exit选项,将此选项和dock中的View Controller进行关联,如图2.28所示。

(5)Did End On Exit选项和dock中的View Controller进行关联后,会弹出当前声明的方法,如图2.29所示。

 

图2.28  iOS 9音频关联

(6选择其中的setRate:方法,此时Did End On Exit就与setRate:方法进行关联了,如图2.30所示。

 

图2.29 iOS 9音频弹出方法对话框                图2.30  iOS 9音频关联后的效果

(7打开ViewController.swift文件,编写代码,实现播放速度的控制。代码如下:

  • @IBAction func setRate(sender: AnyObject) {
  • rateTextField.resignFirstResponder()                                                                                    //关闭键盘
  • //判断音频文件是否没有开始播放
  • if(audioEffect!.playing==false && audioEffect?.currentTime == 0.0){
  • //没有开始播放
  • audioEffect?.enableRate=true                                                                             //允许改变播放速度
  • let rateValue=NSString(string: rateTextField.text!).floatValue
  •  audioEffect?.rate=rateValue                                                                                //设置播放速度
  • hideMoreSettingsView()
  • }else{
  • //开始播放
  • let alertController = UIAlertController(title: "提示", message: "音乐开已经播放,设置无效", preferredStyle: UIAlertControllerStyle.Alert)
  • //关闭更多设置项
  • let action = UIAlertAction(title: "知道了", style: UIAlertActionStyle.Default){
  •             (action: UIAlertAction!) -> Void in
  •             self.hideMoreSettingsView()
  •         }
  • alertController.addAction(action)
  • self.presentViewController(alertController, animated: true, completion: nil)
  • }
  • }

此时运行程序,在出现的模拟器界面中轻拍更多按钮,弹出更多设置项,在播放速度对应的文本框中输入数字,按下return键后,退出更多设置项。轻拍播放按钮,音频文件就会进行播放了。此时音频文件播放的速度与用户输入的数字有关。

注意:如果开发者在iOS 9音频文件播放一段时间后轻拍更多按钮,在弹出的更多设置项中输入播放速度,此时输入的速度是无效的,它不可以控制音频文件的播放速度,所以在按下return键后,会弹出“iOS9音乐已经播放,设置无效”的警告视图,如图2.31所示。

 

图2.31  iOS 9音频警告视图

本文选自:iOS 9音频应用开发基础教程大学霸内部资料,转载请注明出处,尊重技术尊重IT人!

iOS 9音频应用播放音频之控制播放速度的更多相关文章

  1. iOS 9音频应用播放音频之播放控制暂停停止前进后退的设置

    iOS 9音频应用播放音频之播放控制暂停停止前进后退的设置 ios9音频应用播放控制 在“iOS 9音频应用播放音频之ios9音频基本功能”一文可以看到AVAudioPlayer类有很多的属性以及方法 ...

  2. iOS开发拓展篇—封装音频文件播放工具类

    iOS开发拓展篇—封装音频文件播放工具类 一.简单说明 1.关于音乐播放的简单说明 (1)音乐播放用到一个叫做AVAudioPlayer的类 (2)AVAudioPlayer常用方法 加载音乐文件 - ...

  3. IOS音频1:之采用四种方式播放音频文件(一)AudioToolbox AVFoundation OpenAL AUDIO QUEUE

    本文转载至 http://blog.csdn.net/u014011807/article/details/40187737 在本卷你可以学到什么? 采用四种方法设计应用于各种场合的音频播放器: 基于 ...

  4. iOS 9音频应用播放音频之第一个ios9音频实例

    iOS 9音频应用播放音频之第一个ios9音频实例 第一个ios9音频实例 为了让开发者可以对上面的内容有更加深入的了解,本节将实现播放音频的第一个实例.在此实例中会涉及到项目的创建.界面设计.关联以 ...

  5. iOS从零开始学习直播之音频2.后台播放和在线播放

    本篇主要讲音频的后台播放和在线播放. 后台播放   上一篇写的工程运行之后程序退至后台,发现运行不了,歌停止了,这显然不行,音乐后台播放是标配啊.今天就来讲一下后台播放. 1.在plist文件里,告诉 ...

  6. iOS从零开始学习直播之音频1.播放本地音频文件

      现在直播越来越火,俨然已经成为了下一个红海.作为一个资深码农(我只喜欢这样称呼自己,不喜欢别人这样称呼我),我必须赶上时代的潮流,开始研究视频直播.发现视屏直播类的文章上来就讲拉流.推流.采集.美 ...

  7. ios开发——实用技术篇&网络音频播放

    网络音频播放 在日常的iOS开发中,我们通常会遇到媒体播放的问题,XCode中已经为我们提供了功能非常强大的AVFoundation框架和 MediaPlayer框架.其中AVFoundation框架 ...

  8. iOS 播放音频的几种方法

    Phone OS 主要提供以下了几种播放音频的方法: System Sound Services AVAudioPlayer 类 Audio Queue Services OpenAL 1. Syst ...

  9. ios不触发事件也能播放音频

    ios不触发事件也能播放音频. 首先界面初始化预加载一个没有声音的音频,代码如下: html: js: $(function(){ $("#start_audio")[0].pla ...

随机推荐

  1. JVM学习四:JVM之类加载器之初始化分析

    在经过了前面的加载  和 连接分析之后,这一节我们进入重要的初始化分析过程: 一.认识初始化 初始化:这个似乎与上面的初始化为默认值有点矛盾,我们再看一遍:为累的静态变量赋予正确的初始值,上面是赋予默 ...

  2. jQuery面向对象的写法

    定义的写法 //构造函数 function test(){ //construct code } //初始化方法 test.prototype.init = function(){ //init co ...

  3. Linux Shell 程序调试

    Linux Shell 程序调试 Shell程序的调试是通过运行程序时加入相关调试选项或在脚本程序中加入相关语句,让shell程序在执行过程中显示出一些可供参考的“调试信息”.当然,用户也可以在she ...

  4. 在asp.net中使用加密数据库联接字符串

    在我们发布网站时,加密web.config,这样可以有效保证数据库用户和密码安全,其步骤如下: 1.添加密钥 执行:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50 ...

  5. 使用generatorConfig工具自动生成mybatis的实体类以及dao接口和映射文件

    1:数据准备 创建一个数据库表 CREATE TABLE `logininfo` ( `id` ) NOT NULL AUTO_INCREMENT, `username` ) DEFAULT NULL ...

  6. 【CF802C】 Heidi and Library (hard)(费用流)

    题目链接 感觉跟餐巾计划问题有点像.费用流. 决定每天买不买不太好搞,不如先把所有东西都买进来,再卖掉不必要的. 拆点,每个点拆成\(x,y\). 源点向每个点的\(x\)连费用为当天的价格,流量为1 ...

  7. 【leetcode 简单】第十四题 最后一个单词的长度

    给定一个仅包含大小写字母和空格 ' ' 的字符串,返回其最后一个单词的长度. 如果不存在最后一个单词,请返回 0 . 说明:一个单词是指由字母组成,但不包含任何空格的字符串. 示例: 输入: &quo ...

  8. bzoj 3123 可持久化线段树启发式合并

    首先没有连边的操作的时候,我们可以用可持久化线段树来维护这棵树的信息,建立权值可持久化线段树,那么每个点继承父节点的线段树,当询问为x,y的时候我们可以询问rot[x]+rot[y]-rot[lca( ...

  9. bootstrap入门项目备份

    bootstrap入门项目备份 http://files.cnblogs.com/files/wordblog/bootstrap%E5%85%A5%E9%97%A8%E9%A1%B9%E7%9B%A ...

  10. imperva agent 的重新注册

    情况是这样 公司搭了一个环境有mysql的数据库并且安装了agent,imperva管理平台上也可以看到agent的注册信息,但是没想到的是有人把我的虚机给还原快照了,而且还没保存..... 这次写个 ...