[Xcode 實際操做]6、媒體與動畫-(16)實現音樂的背景播放

目錄:[Swift]Xcode實際操做html

本文將演示音樂的背景播放功能swift

打開項目信息配置文件【info.plist】。網絡

須要在配置文件中進行一些操做,使程序支持音樂的背景播放。session

點擊鼠標右鍵,彈出右鍵菜單。框架

在彈出的菜單中選擇【Add Row】添加一行命令。ide

在鍵名輸入框內,輸入須要設置的鍵名:【Required background modes】oop

點擊右向箭頭彈出隱藏的內容。post

在右側的值輸入框內進行點擊,用來設置鍵值。ui

點擊選擇鍵對應的值:【App plays audio or streams audio/video AirPlay】spa

使程序支持:後臺播放本地音頻、網絡流音頻、以及使用AirPlay播放視頻。

在項目導航區,打開視圖控制器的代碼文件【ViewController.swift】

 1 import UIKit
 2 //首先引入須要使用的流媒體基礎框架,
 3 //它能收集各類多媒體數據。
 4 //這些數據能夠來自不一樣的輸入設備,
 5 //好比攝像機、錄音機等
 6 import AVFoundation
 7 
 8 class ViewController: UIViewController {
 9 
10     //初始化音頻播放對象,並將音頻播放對象,做爲視圖控制器類的屬性
11     var audioPlayer:AVAudioPlayer = AVAudioPlayer()
12     
13     override func viewDidLoad() {
14         super.viewDidLoad()
15         // Do any additional setup after loading the view, typically from a nib.
16         
17         //得到音頻會話對象,該對象屬於單例模式,
18         //也就是不用開發者而自行實例化。
19         //這個類在各類音頻環境中,起着很是重要的做用
20         let session = AVAudioSession.sharedInstance()
21 
22         //在音頻播放前,首先建立一個異常捕捉語句
23         do{
24             //啓動音頻會話管理,此時會阻斷後臺音樂的播放
25             try session.setActive(true)
26             //Swift內置支持檢查API可用性,這可確保不會意外使用在給定部署目標上不可用的API。
27             if #available(iOS 10.0, *) {
28                 //設置音頻播放的類別,表示該應用僅支持音頻的播放
29                 try session.setCategory(.playback, mode: .default)
30             } else {
31                 // Fallback on earlier versions
32             }
33             //設置應用程序支持接收遠程控制事件
34             UIApplication.shared.beginReceivingRemoteControlEvents()
35             
36             //定義一個字符串常量,描述聲音文件的路徑
37             let path = Bundle.main.path(forResource: "music", ofType: "mp3")
38             //將字符串路徑,轉換爲網址路徑
39             let soundUrl = URL(fileURLWithPath: path!)
40             
41             //對音頻播放對象進行初始化,並加載指定的音頻文件
42             try audioPlayer = AVAudioPlayer(contentsOf: soundUrl)
43             //爲音頻播放作好準備
44             audioPlayer.prepareToPlay()
45             //設置音頻播放對象的音量大小
46             audioPlayer.volume = 1.0
47             //設置音頻播放的次數,-1爲無限循環播放
48             audioPlayer.numberOfLoops = -1
49             //開始音頻素材的播放
50             audioPlayer.play()
51             
52         } catch{
53             print(error)
54         }
55     }
56 
57     override func didReceiveMemoryWarning() {
58         super.didReceiveMemoryWarning()
59         // Dispose of any resources that can be recreated.
60     }
61 }
相關文章
相關標籤/搜索