Swift如何实现音乐播放,后台播放及控制。

来源:互联网 发布:apache tomcat modjk 编辑:程序博客网 时间:2024/04/30 20:25

播放音乐

首先,创建一个项目MediaDemo。
导入所需要的包

import AVFoundationimport MediaPlayer

定义一个播放器的变量

var audioPlayer: AVAudioPlayer?

添加查找播放源的代码

 let path = NSBundle.mainBundle().pathForResource("music", ofType: "mp3")        let pathURL=NSURL(fileURLWithPath: path!)        do {            audioPlayer = try AVAudioPlayer(contentsOfURL: pathURL)        } catch {            audioPlayer = nil        }

缓冲音乐

audioPlayer?.prepareToPlay()

在页面上加创建两个按钮play,pause(没做约束)

 let playbtn = UIButton()        playbtn.frame = CGRectMake(60 , 200, 100, 40)        playbtn.backgroundColor = UIColor.cyanColor()        playbtn.setTitle("play", forState: .Normal)        playbtn.setTitleColor(UIColor.whiteColor(), forState: .Normal)        let pausebtn = UIButton(frame: CGRectMake(180 , 200, 100, 40) )        pausebtn.setTitle("pause", forState: .Normal)        pausebtn.setTitleColor(UIColor.whiteColor(), forState: .Normal)        pausebtn.backgroundColor = UIColor.cyanColor()        self.view.addSubview(playbtn)        self.view.addSubview(pausebtn)

给两个按钮加上监听,实现播放和暂停功能。

 playbtn.addTarget(self, action: "play", forControlEvents: .TouchUpInside) pausebtn.addTarget(self, action: "pause", forControlEvents: .TouchUpInside)    func play(){        audioPlayer.play()    }    func pause(){        audioPlayer.pause()    }

这样音乐就可以播放啦。

后台播放及控制

首先在info.list中需要添加下面这条信息
在info.list中添加

在viewload中添加,这句话要添加在audioPlayer.play()之前

       do {            try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayAndRecord)            try AVAudioSession.sharedInstance().setActive(true)        } catch {        }

下面这句话是为了在锁屏界面显示信息,及控制面板

UIApplication.sharedApplication().beginReceivingRemoteControlEvents()

设置锁屏界面

 func setLockView(){        MPNowPlayingInfoCenter.defaultCenter().nowPlayingInfo = [// 歌曲名称MPMediaItemPropertyTitle:"第一夫人",// 演唱者MPMediaItemPropertyArtist:"张杰",// 锁屏图片MPMediaItemPropertyArtwork:MPMediaItemArtwork(image: UIImage(named: "img.jpeg")!),// MPNowPlayingInfoPropertyPlaybackRate:1.0,// 总时长            MPMediaItemPropertyPlaybackDuration:audioPlayer.duration,// 当前时间        MPNowPlayingInfoPropertyElapsedPlaybackTime:audioPlayer.currentTime        ]    }

viewDidLoad中调用代码

self.setLockView()

添加锁屏远程控制音乐播放代码

    override func remoteControlReceivedWithEvent(event: UIEvent?) {        switch event!.subtype {        case .RemoteControlPlay:  // play按钮            audioPlayer.play()        case .RemoteControlPause:  // pause按钮            audioPlayer.pause()        case .RemoteControlNextTrack:  // next            // ▶▶             break        case .RemoteControlPreviousTrack:  // previous            // ◀◀             break        default:            break        }    }

源代码:
https://github.com/iancui/MediaDemo.git

0 0
原创粉丝点击