ZLMusic模仿百度音樂應用項目源碼,zlmusic百度音樂

來源:互聯網
上載者:User

ZLMusic模仿百度音樂應用項目源碼,zlmusic百度音樂

 

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

    • <ignore_js_op>運行
    • <ignore_js_op>運行
    • <ignore_js_op>運行
    • 詳細說明:http://ios.662p.com/thread-2239-1-1.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.