diff --git a/README.md b/README.md index e8b2243..d28e9e9 100644 --- a/README.md +++ b/README.md @@ -18,3 +18,5 @@ TechMuzzJsonParser ![Final App Screenshot](/screenshots/final1.png?raw=true "Table cells with thumbnails") ![Final App Screenshot](/screenshots/final2.png?raw=true "Track detail view") + +![Final App Screenshot](/screenshots/final2.png?raw=true "Audio Player button") diff --git a/TechMuzzJsonParser/AudioVC.swift b/TechMuzzJsonParser/AudioVC.swift index fdc4bd9..e9bce3a 100644 --- a/TechMuzzJsonParser/AudioVC.swift +++ b/TechMuzzJsonParser/AudioVC.swift @@ -8,11 +8,13 @@ import Foundation import UIKit +import AVFoundation class AudioVC : UIViewController { var image = UIImage() var mainSongTitle = String() + var previewUrl = String() @IBOutlet var background: UIImageView! @@ -20,10 +22,79 @@ class AudioVC : UIViewController { @IBOutlet var songTitle: UILabel! + @IBOutlet var playPauseButton: UIButton! + override func viewDidLoad() { songTitle.text = mainSongTitle background.image = image mainImageView.image = image + playPauseButton.setTitle("Pause", for: .normal) + playPauseButton.isHidden = false + if previewUrl != "" { + downloadFileFromUrl(url: URL(string: previewUrl)!) + } else { + playPauseButton.isHidden = true + self.showToast(message: "No Preview URL...") + } + } + + func downloadFileFromUrl(url: URL) { + var downloadTask = URLSessionDownloadTask() + downloadTask = URLSession.shared.downloadTask(with: url, completionHandler: { + customURL, response, error in + self.play(url: customURL!) + }) + downloadTask.resume() + } + + func play(url : URL) { + do { + player = try AVAudioPlayer(contentsOf: url) + player.prepareToPlay() + player.play() + } + catch { + print(error) + } + + } + + @IBAction func playPause(_ sender: Any) { + if player.isPlaying { + player.pause() + playPauseButton.setTitle("Play", for: .normal) + } else { + player.play() + playPauseButton.setTitle("Pause", for: .normal) + } } + + override func viewWillDisappear(_ animated : Bool) { + super.viewWillDisappear(animated) + + if (self.isMovingFromParentViewController){ + player.pause() + } + } + + func showToast(message : String) { + + let toastLabel = UILabel(frame: CGRect(x: self.view.frame.size.width/2 - 75, y: self.view.frame.size.height-100, width: 150, height: 35)) + toastLabel.backgroundColor = UIColor.black.withAlphaComponent(0.6) + toastLabel.textColor = UIColor.white + toastLabel.textAlignment = .center; + toastLabel.font = UIFont(name: "Montserrat-Light", size: 12.0) + toastLabel.text = message + toastLabel.alpha = 1.0 + toastLabel.layer.cornerRadius = 10; + toastLabel.clipsToBounds = true + self.view.addSubview(toastLabel) + UIView.animate(withDuration: 4.0, delay: 0.1, options: .curveEaseOut, animations: { + toastLabel.alpha = 0.0 + }, completion: {(isCompleted) in + toastLabel.removeFromSuperview() + }) + } + } diff --git a/TechMuzzJsonParser/Base.lproj/Main.storyboard b/TechMuzzJsonParser/Base.lproj/Main.storyboard index 170d122..1c13a74 100644 --- a/TechMuzzJsonParser/Base.lproj/Main.storyboard +++ b/TechMuzzJsonParser/Base.lproj/Main.storyboard @@ -30,7 +30,6 @@ - @@ -41,7 +40,7 @@ - + @@ -78,6 +77,7 @@ + @@ -117,6 +117,14 @@ + @@ -145,6 +153,7 @@ + diff --git a/TechMuzzJsonParser/ViewController.swift b/TechMuzzJsonParser/ViewController.swift index 5765f7b..378cdde 100644 --- a/TechMuzzJsonParser/ViewController.swift +++ b/TechMuzzJsonParser/ViewController.swift @@ -8,10 +8,14 @@ import UIKit import Alamofire +import AVFoundation + +var player = AVAudioPlayer() struct Post { let mainImage : UIImage! let name : String! + let previewUrl : String! } class TableViewController: UITableViewController { @@ -46,6 +50,7 @@ class TableViewController: UITableViewController { for i in 0..