关闭

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

标签: swift音乐mediaplayer
1625人阅读 评论(0) 收藏 举报
分类:

播放音乐

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

import AVFoundation
import 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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:2886次
    • 积分:87
    • 等级:
    • 排名:千里之外
    • 原创:6篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类