iOS 9音訊應用播放音訊之播放控制暫停停止前進後退的設定

大學霸發表於2015-11-23

iOS 9音訊應用播放音訊之播放控制暫停停止前進後退的設定

ios9音訊應用播放控制

在“iOS 9音訊應用播放音訊之ios9音訊基本功能”一文可以看到AVAudioPlayer類有很多的屬性以及方法。本節將AVAudioPlayer類中常使用到的屬性和方法進行詳細的講解。

ios9音訊應用暫停/停止

在音樂應用程式中都會有一個使音樂停止播放的按鈕。當使用者輕拍該按鈕,正在播放的音樂就會停止。在iOS要想要正在播放的音訊停止下來,可以使用AVAudioPlayer類中的pause()方法和stop()方法。

1.暫停

pause()方法的功能是暫停正在播放的音訊檔案,音訊檔案仍然準備從暫停處離開恢復播放。其語法形式如下:


  • func pause()


2.停止

stop()方法的功能是停止正在播放的音訊檔案,並撤消所需的播放設定,即如果恢復播放,音訊檔案就需要重新開始播放。其語法形式如下:


  • func stop()


注意:stop()方法在Xcode 6.0之後和pause的功能是一樣的,但是幫助文件中對stop()的簡介還是以前的。

【示例2-1】以下將以第一個例項為基礎,在播放音訊的基礎上實現暫停音訊播放的功能。程式碼如下:


  • @IBAction func playAudio(sender: AnyObject) {
  •     audioEffect?.play()                                                                                  //播放聲音
  •     playButton.setBackgroundImage(UIImage(named: "pauseImage.png"), forState: UIControlState.Normal)
  •     playButton.addTarget(self, action: ("pauseAudio"), forControlEvents: UIControlEvents.TouchUpInside)
  •     }
  • func pauseAudio(){
  •     audioEffect?.pause()                                                  //暫停
  •     playButton.setBackgroundImage(UIImage(named: "playImage.png"), forState: UIControlState.Normal)
  •     playButton.addTarget(self, action: ("playAudio:"), forControlEvents: UIControlEvents.TouchUpInside)
  • }


此時執行程式,在出現的模擬器介面中輕拍播放按鈕,此時音訊檔案就會播放,並且播放按鈕會變為暫停按鈕;當開發者輕拍暫停按鈕,播放的音訊檔案就會暫停播放,並且暫停按鈕就變為原來的播放按鈕。

注意:由於在大多數的音樂播放器中都不會出現停止控制元件,所在在此示例中也就不進行程式碼實現了。

ios9音訊應用前進/後退

AVAudioPlayer類中有一個currentTime屬性。該屬性可以用來對當前播放的音訊檔案的時長進行設定的,即對當前播放的音訊檔案的播放位置進行設定。該屬性值以秒為單位的。其語法形式如下:


  • var currentTime: NSTimeInterval


透過對currentTime屬性的設定,我們可以實現在音樂應用中的前進後退功能。

1.前進

前進功能就是讓正在播放的音訊檔案前進幾秒進行播放。它的實現就是讓currentTime屬性設定的值進行固定的加法運算。

【示例2-2以下將以第一個例項為基礎,實現前進的功能。具體的操作步驟如下:

1)將主檢視中的Forward Button按鈕與動作forwardAudio進行關聯。

2)開啟ViewController.swift檔案,編寫程式碼,實現前進功能。程式碼如下:


  • @IBAction func forwardAudio(sender: AnyObject) {
  •    //判斷音訊檔案是否正在播放
  • if(audioEffect!.playing){
  •      //音訊檔案正在播放,實現前進
  •         let desiredTime=(self.audioEffect?.currentTime)!+20.0
  •         //判斷設定的時間是否小於音訊檔案的總時間
  •         if(desiredTime<self.audioEffect?.duration){
  •             self.audioEffect?.currentTime=desiredTime                                                    //設定當前播放的時間
  •         }
  • }else{
  •         let alertController = UIAlertController(title: "提示", message: "音樂沒有開始播放", preferredStyle: UIAlertControllerStyle.Alert)
  •         let action = UIAlertAction(title: "知道了", style: UIAlertActionStyle.Default, handler: nil)
  •         alertController.addAction(action)
  •         self.presentViewController(alertController, animated: true, completion: nil)
  •     }
  • }


此時執行程式後,在模擬器介面中輕拍播放按鈕,此時音訊檔案就會開始播放,當開發者輕拍前進按鈕後,音訊檔案就會快進20秒然後進行播放。(每輕拍一次就會快進20秒的進度)。

注意:如果開發者沒有輕拍播放按鈕,而是直接輕拍前進按鈕,那麼就是彈出“音樂沒有開始播放”的警告檢視,如圖2.25所示。


2.25  警告檢視

2.後退

後退功能就是讓正在播放的音訊檔案後退幾秒進行播放。它的實現就是讓currentTime屬性設定的值進行固定的減法運算。

【示例2-3以下將以第一個例項為基礎,實現後退的功能。具體的操作步驟如下:

1)將主檢視中的Backward Button按鈕與動作backwardAudio進行關聯。

2)開啟ViewController.swift檔案,編寫程式碼,實現後退功能。程式碼如下:


  • @IBAction func backwardAudio(sender: AnyObject) {
  • if(audioEffect!.playing){
  •     //實現後退
  •         let desiredTime=(self.audioEffect?.currentTime)!-20.0
  •         //判斷指定的時間是否為0
  •         if(desiredTime<0){
  •             self.audioEffect?.currentTime=0.0
  •         }else{
  •             self.audioEffect?.currentTime=desiredTime
  •         }
  •     }else{
  •         let alertController = UIAlertController(title: "提示", message: "音樂沒有開始播放", preferredStyle: UIAlertControllerStyle.Alert)
  •         let action = UIAlertAction(title: "知道了", style: UIAlertActionStyle.Default, handler: nil)
  •         alertController.addAction(action)
  •         self.presentViewController(alertController, animated: true, completion: nil)
  •         }
  • }
  • }


此時執行程式後,在模擬器介面中輕拍播放按鈕,此時音訊檔案就會開始播放。當開發者輕拍後退按鈕後,音訊檔案就會後退20秒然後進行播放。(每輕拍一次就會後退20秒的進度)。

注意:如果開發者沒有輕拍播放按鈕,而是直接輕拍後退按鈕,那麼就是彈出“音樂沒有開始播放”的警告檢視。

本文選自:iOS 9音訊應用開發基礎教程大學霸內部資料,轉載請註明出處,尊重技術尊重IT人!

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29597077/viewspace-1844488/,如需轉載,請註明出處,否則將追究法律責任。

相關文章