| | |
| | | import UIKit |
| | | import JQTools |
| | | |
| | | class HomeItemDetailVC: BaseVC { |
| | | class HomeItemDetailVC: BaseVC,PayMusicDelegate{ |
| | | |
| | | @IBOutlet weak var slider_voice: UISlider! |
| | | @IBOutlet weak var view_function: UIView! |
| | |
| | | @IBOutlet weak var view_playState: UIView! |
| | | @IBOutlet weak var label_playState: UILabel! |
| | | @IBOutlet weak var btn_playMode: UIButton! |
| | | @IBOutlet weak var label_currentTime: UILabel! |
| | | @IBOutlet weak var label_totalTime: UILabel! |
| | | |
| | | private var collect_bitem:UIBarButtonItem! |
| | | |
| | | private var audioPlayer:AudioPlayer = AudioPlayer.getSharedInstance() |
| | | private var id:Int! |
| | | private var settingViewModel = UserDefaultSettingViewModel.getSetting() |
| | | private var model:MeditationModel?{ |
| | |
| | | |
| | | btn_playMode.isSelected = settingViewModel?.playModel == .singleLoop |
| | | |
| | | if AudioPlayer.getSharedInstance().times.value != nil{ |
| | | if audioPlayer.times.value != nil{ |
| | | startMiniRunloop() |
| | | }else{ |
| | | endMiniRunloop() |
| | | } |
| | | |
| | | Services.getMeditationDetail(id: id).subscribe(onNext: {data in |
| | | Services.getMeditationDetail(id: id).subscribe(onNext: {[unowned self] data in |
| | | self.model = data.data |
| | | self.collect_bitem.image = data.data?.favorite == .yes ? UIImage(named: "btn_collect_s"):UIImage(named: "btn_collect_1") |
| | | self.collect_bitem.tintColor = data.data?.favorite == .yes ? UIColor(hexString: "fe5b60"):.white |
| | | |
| | | if audioPlayer.meditationModel?.id == data.data?.id{ |
| | | audioPlayer.delegate = self |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | override func setRx() { |
| | | AudioPlayer.getSharedInstance().times.subscribe {[weak self] t in |
| | | audioPlayer.times.subscribe {[weak self] t in |
| | | guard let weakSelf = self else { return } |
| | | guard let time = t,time > 0 else {weakSelf.endMiniRunloop();return} |
| | | let turple = Date.jq_formateToTime_tuple(time) |
| | |
| | | super.viewWillAppear(animated) |
| | | (navigationItem.leftBarButtonItem?.customView as? UIButton)?.setImage(UIImage(named: "btn_back")?.withTintColor(.white), for: .normal) |
| | | } |
| | | |
| | | |
| | | private func startMiniRunloop(){ |
| | | // 创建旋转动画 |
| | |
| | | |
| | | @IBAction func playAction(_ sender: UIButton) { |
| | | |
| | | // showHUD("准备播放") |
| | | |
| | | if var m = model{ |
| | | m.backgroundUrl = "https://downsc.chinaz.net/Files/DownLoad/sound1/201906/11582.mp3,https://www.cambridgeenglish.org/images/153149-movers-sample-listening-test-vol2.mp3" |
| | | |
| | | m.tutorAudioUrl = "https://downsc.chinaz.net/files/download/sound1/201206/1638.mp3" |
| | | audioPlayer.playBGMAt(firstPlayIndex: 0, model: m, delegate: self) |
| | | } |
| | | } |
| | | |
| | | @IBAction func timeAction(_ sender: UIButton) { |
| | | CountdownChooseListView.show {[weak self] times in |
| | | guard let weakSelf = self else { return } |
| | | AudioPlayer.getSharedInstance().setTimer(times: times * 60) |
| | | weakSelf.audioPlayer.setTimer(times: times * 60) |
| | | |
| | | // if times <= 0{ |
| | | // weakSelf.timer = nil |
| | |
| | | vc.modalPresentationStyle = .custom |
| | | present(vc, animated: true) |
| | | } |
| | | |
| | | @IBAction func beLikeAction(_ sender: UIButton) { |
| | | |
| | | } |
| | | |
| | | |
| | | @IBAction func playWayAction(_ sender: UIButton) { |
| | | UIView.animate(withDuration: 0.5) { |
| | |
| | | override var preferredStatusBarStyle: UIStatusBarStyle{ |
| | | return .lightContent |
| | | } |
| | | |
| | | func playState(_ state:PlayMusicState){ |
| | | print("music:当前状态:\(state)") |
| | | |
| | | guard audioPlayer.meditationModel?.id == model?.id else {return} |
| | | |
| | | switch state { |
| | | case .playing: |
| | | PayMusicVC.show(model: model!) |
| | | if btn_play.isHidden == false {btn_play.isHidden = true} |
| | | hiddenHUD() |
| | | case .paurse: |
| | | btn_play.isHidden = false |
| | | case .end:break |
| | | case .next:break |
| | | } |
| | | } |
| | | |
| | | func playListen(currentInterval:TimeInterval,totalInterval:TimeInterval){ |
| | | guard audioPlayer.meditationModel?.id == model?.id else {return} |
| | | guard !totalInterval.isNaN else {return} |
| | | guard !currentInterval.isNaN else {return} |
| | | |
| | | let v = currentInterval / totalInterval * 100 |
| | | print("music:当前时间:\(currentInterval) ---- \(totalInterval) -- \(v)%") |
| | | self.slider_voice.value = Float(v) |
| | | let current = Date.jq_formateToTime_tuple(Int(currentInterval)) |
| | | label_currentTime.text = String(format: "%02ld:%02ld", current.hour * 60 + current.minute,current.second) |
| | | |
| | | let total = Date.jq_formateToTime_tuple(Int(totalInterval)) |
| | | label_totalTime.text = String(format: "%02ld:%02ld", total.hour * 60 + total.minute,total.second) |
| | | } |
| | | } |