首页 > 学院 > 开发设计 > 正文

ZLMusic模仿百度音乐应用项目源码

2019-11-14 19:34:30
字体:
来源:转载
供稿:网友

 

func stopPlayMusic() {    if (self.isStop == true) {        self.player.pause()        btn .setTitle("播放", forState:UIControlState.Normal)        //var paused = player.currentTime        self.songImageView.layer.speed = 0.0             }else{        self.player.play()        btn .setTitle("暂停", forState:UIControlState.Normal)        self.songImageView.layer.beginTime = player.currentTime        self.songImageView.layer.speed = 0.1    }    isStop = !isStop   }   func downloadData(path: NSString,dataHandler: (NSData)->Void){        var url = NSURL(string: path)        var request = NSURLRequest(URL: url)        var mainQueue = NSOperationQueue.mainQueue()        NSURLConnection.sendAsynchronousRequest(request, queue: mainQueue) {            (response:NSURLResponse!, data:NSData!, error:NSError!) -> Void in            var httPResponse = response as NSHTTPURLResponse            if httpResponse.statusCode == 200 {               dataHandler(data)            }                     }     }         func downloadSong(path: NSString) {        self.downloadData(path, dataHandler: { (data: NSData) -> Void in            self.playSong(data)        })    }    func downloadSongLrc(path: NSString) {        var lrcPath = "http://ting.baidu.com/(path)"        self.downloadData(lrcPath, dataHandler: { (data: NSData) -> Void in            var lrc = NSString(data: data, encoding:NSUTF8StringEncoding)            var lrcLists = lrc.componentsSeparatedByString("/n") as NSArray            println("/(lrc)")            println("/(lrcLists[5])")                    })    }    func loadSongMessage(id: Int) {                 var path = "http://music.baidu.com/data/music/fmlink?type=mp3&rate=1&format=json&songIds=/(id)"        downloadData(path, dataHandler: { (data: NSData) -> Void in            var array: NSDictionary = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.AllowFragments, error:nil) as NSDictionary            var dataDic: NSDictionary = array["data"] as NSDictionary            var list:NSArray = dataDic["songList"] as NSArray            var songDic:NSDictionary = list[0] as NSDictionary            self.currentSong.refreshSong(songDic)            self.title = self.currentSong.songName            println("/(songDic)")            self.playImage(self.currentSong.songPicRadio)            self.showSongInfo()            self.downloadSong(self.currentSong.songLink)            self.downloadSongLrc(self.currentSong.lrcLink)        })             }         func playImage(path: NSString) {                          if path == "" {            self.songImageView.backgroundColor = UIColor.cyanColor()        }else{            var url = NSURL(string: path)            var data = NSData(contentsOfURL: url, options: nil, error: nil)            var image = UIImage(data: data)            self.songImageView.image = image        }        self.songImageView.contentMode = UIViewContentMode.ScaleaspectFit        self.songImageView.layer.cornerRadius = self.songImageView.frame.width/2        self.songImageView.layer.masksToBounds = true        self.songImageView.userInteractionEnabled = true        var ges = UITapGestureRecognizer(target: self, action:"tapImageView:")        self.songImageView.addGestureRecognizer(ges)             }    func showSongInfo() {        self.artistName.text = self.currentSong.artistName        self.songName.text = self.currentSong.songName        self.timeLabel.text = "00:00"    }    func loadSongList() {        var path = "http://fm.baidu.com/dev/api/?tn=playlist&special=Flash&prepend=&format=json&_=1378945264366&id="+String(channel.id)        downloadData(path, dataHandler: { (data: NSData) -> Void in            var dic: NSDictionary = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.AllowFragments, error:nil) as NSDictionary            var list: NSArray = dic["list"] as NSArray            for dict in list{                var song = Song()                song.id = dict["id"] as Int                self.songList.append(song)            }            if self.songList.count != 0 {                self.currentSong = self.songList[0]                self.loadSongMessage(self.currentSong.id)            }        })    }     func doAnimation() {        var animation = CABasicAnimation(keyPath: "transform.rotation.z")        animation.toValue = NSNumber(double: 2.0*M_PI)        animation.duration = 1.5        animation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear)        animation.removedOnCompletion = false        animation.cumulative = false        animation.repeatCount = FLT_MAX        self.songImageView.layer.addAnimation(animation, forKey: "AnimatedKey")        self.songImageView.layer.speed = 0.1    }         func tapImageView(sender:UITapGestureRecognizer){        self.stopPlayMusic()    }        override func viewDidLoad() {        super.viewDidLoad()        //self.title = channel.title        loadSongList()        self.view.backgroundColor = UIColor(red: 218/255.0, green: 225/255.0, blue: 230/255.0, alpha: 1)        println("/(channel.id)")    }    override func viewWillDisappear(animated: Bool) {        timer.invalidate()        self.songImageView.stopAnimating()        player.stop()    }    override func didReceiveMemoryWarning() {        super.didReceiveMemoryWarning()        // Dispose of any resources that can be recreated.    }          func AudioPlayerDidFinishPlaying(player: AVAudioPlayer!, successfully flag: Bool) {        timer.invalidate()        self.songImageView.layer.speed = 0        self.songImageView.stopAnimating()        var index = self.currentIndex + 1        loadSongWithIndex(index)}



 

这个项目是一个比较不错的ZLMusic模仿百度音乐应用,也是采用Swift开发的百度音乐电台,基本模仿了现实中的百度音乐应用功能了,支持播放功能,上首歌,下一首个,以及歌曲分类等。

项目源码下载:http://code.662p.com/view/9375.html


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表