AV Foundation学习之(二)

来源:互联网 发布:python 模仿浏览器 编辑:程序博客网 时间:2024/06/15 03:33
上一篇学到了如何调用系统语音朗诵。那种感觉没多大意思。系统的语音太难听了。特别是那男的生意。真是受不鸟了。所以大部分人都是用本地语音。既然本地语音那么怎么玩呢?主要是这个AVAudioPlayer,这是一个播放音频类。这个类提供了一种简单的从本地文本或内存中播放音频的方法。还是看代码吧。var play = falsevar players:NSArray?override func viewDidLoad() {    super.viewDidLoad()    initData()}///这里我存了3个本地的音频func initData() {    let onePlay = self.playerForFile(name: "1")    let twoPlay = self.playerForFile(name: "2")    let threePlay = self.playerForFile(name: "3")    self.players = [onePlay,twoPlay,threePlay]}/////这里返回每个AVAudioPlayerfunc playerForFile(name:String)->AVAudioPlayer {    let fileURL = Bundle.main.url(forResource: name, withExtension: "m4a")    let play = try! AVAudioPlayer.init(contentsOf: fileURL!)    play.numberOfLoops = -1 ////设置循环的次数,-1为无线循环    play.enableRate = true ////这个只有设置成true 才能改变速率    play.prepareToPlay()////打开播放的准备    return play }//播放 @IBAction func playTap(_ sender: UIButton) {    if !self.play {        let delaytime = (self.players?[0] as AnyObject).deviceCurrentTime + 0.01        for  player in self.players! {            let pl = player as! AVAudioPlayer            pl.play(atTime: delaytime)        }        self.play = true    }}///停止@IBAction func stopTap(_ sender: UIButton) {    if self.play {        for player in self.players! {         let pl = player as! AVAudioPlayer        pl.stop()        pl.currentTime = 0.0        }        self.play = false    } }/// 播放的速度////// - Parameter rate:  范围在 0.5x 1.0x是正常 1.5x 2.0xfunc adjustRate(rate:Float) {    for  player in self.players!  {        let pl = player as! AVAudioPlayer        pl.rate = rate    }}/// 播放的声道////// - Parameters:///   - pan: 设置声道范围-1.0 左声道 1.0右声道///   - index: 设置播放数组里面的每一个palyer 的索引func adjustPanforPlayerAtIndex(pan:Float,index:NSInteger) {    for  player in self.players!  {        let pl = player as! AVAudioPlayer        pl.pan = pan    }}/////slider 用户来设置音量@IBAction func slidingTap(_ sender: UISlider) {    let volume = sender.value    self.adjustVolume(volume: volume)}/// 声音大小////// - Parameter volume: 0~1之间的func adjustVolume(volume:Float) {    for  player in self.players!  {        let pl = player as! AVAudioPlayer        pl.volume = volume    }}

这样你点击播放的时候,你会发现你会发现所有的音乐一起播放了。当然你也可以设置单个的。但是很多音乐播放器是我们按了Home键或者锁屏,还是会播放的音乐。那这是怎么设置的?
这个设置是在工程里的Info.plist文件里面添加一个Required background modes 类型的数组,在其中添加名为App plays audio or streams audio/video using AirPlay 的选项。
这里写图片描述