iOS 9音頻應用播放音頻之播放控制暫停中止前進後退的設置

iOS 9音頻應用播放音頻之播放控制暫停中止前進後退的設置

ios9音頻應用播放控制

在「iOS 9音頻應用播放音頻之ios9音頻基本功能」一文能夠看到AVAudioPlayer類有不少的屬性以及方法。本節將AVAudioPlayer類中常使用到的屬性和方法進行詳細的講解。ios

ios9音頻應用暫停/中止

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

1.暫停ide

pause()方法的功能是暫停正在播放的音頻文件,音頻文件仍然準備從暫停處離開恢復播放。其語法形式以下:spa

  • func pause().net

2.中止code

stop()方法的功能是中止正在播放的音頻文件,並撤消所需的播放設置,即若是恢復播放,音頻文件就須要從新開始播放。其語法形式以下:orm

  • 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人!

相關文章
相關標籤/搜索