標籤:prepare content remote sub name role 模式 初始化 self
1. 使用音樂的背景播放功能
(1) 匯入音頻播放架構
import AVFoundation
(2) 建立音頻播放對象
//初始化音頻播放器對象,並將音頻播放對象,作為視圖控制器類的屬相。
var audioPlayer:AVAudioPlayer = AVAudioPlayer()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
//獲得音頻會話對象,該對象屬於單例模式,也就是說不用開發人員而自行執行個體化.這個類在各種音頻環境中,起著重要作用
let session = AVAudioSession.sharedInstance()
//在音頻播放前,首先建立一個異常捕捉語句
do {
//啟動音頻會話管理,此時會阻斷後台音樂的播放.
try session.setActive(true)
//設定音頻操作類別,表示該應用僅支援音訊播放.
try session.setCategory(AVAudioSessionCategoryPlayback)
//設定應用程式支援接受遠端控制事件
UIApplication.sharedApplication().beginReceivingRemoteControlEvents()
//定義字串變數,描述音效檔路徑
let path = NSBundle.mainBundle().pathForResource("music", ofType: "mp3")
//將字串路徑,轉換為網址路徑
let soundUrl = NSURL(fileURLWithPath: path!)
//對音頻播放對象,進行初始化,並載入制定的音頻檔案
try audioPlayer = AVAudioPlayer(contentsOfURL: soundUrl)
//為音頻播放做好準備
audioPlayer.prepareToPlay()
//設定音頻播放對象播放音量的大小
audioPlayer.volume = 1.0
//播放次數
audioPlayer.numberOfLoops = -1 //-1:無限迴圈播放
audioPlayer.play()
}catch {
print(error)
}
}
2. 使用MediaPlayer架構播放影片
(1) 匯入媒體播放器架構,該架構允許訪問音頻和視頻,音頻和視頻檔案的播放器
import MediaPlayer
(2)建立一個視頻播放器
//建立一個視頻播放器屬性,用於播放視頻
var mediaPlayer:MPMoviePlayerController = MPMoviePlayerController()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
do {
//擷取沙箱目錄中,視頻檔案的所在路徑.
let path = NSBundle.mainBundle().pathForResource("movie", ofType: "mp4")
//將字串路徑,轉化為NSUrl路徑
let movieUrl = NSURL(fileURLWithPath: path!)
//初始化
mediaPlayer = MPMoviePlayerController(contentURL: movieUrl)
//設定視頻播放模式為全屏播放.
mediaPlayer.controlStyle = MPMovieControlStyle.Fullscreen
mediaPlayer.view.frame = self.view.bounds
//設定視頻播放的開始時間
mediaPlayer.initialPlaybackTime = -1
//將視頻播放控制器,添加到當前視圖控制器的根視圖
self.view.addSubview(mediaPlayer.view)
//添加一個通知,監聽視頻播放是否結束.
NSNotificationCenter.defaultCenter().addObserver(self, selector:#selector(ViewController.movieFinished(_:)), name:MPMoviePlayerPlaybackDidFinishNotification, object: mediaPlayer)
mediaPlayer.play()
} catch {
print(error)
}
}
//create a method to react 視頻播放的結束時間
func movieFinished(notifi:NSNotification) {
print("Movie ends")
//擷取視頻播放控制器
let player = notifi.object
//取消通知的監聽,釋放資源
NSNotificationCenter.defaultCenter().removeObserver(self, name: NSNotification.Name.MpMoviePlayerPlaybackDidFinish, object: player)
}
iOS - 使用音樂的背景播放功能,使用MediaPlayer架構播放影片(Swift)