swift - AVAudioplayer no resetting on viewDidAppear -
the idea simple , not think question has been asked in past. want build simple mp3 player.
- some songs displayed in collection view user selects song
- segue view options play, pause or stop issue when go home screen select new song current still playing. impossible deactivate current player. when need play 2 songs, 2 playing together
i have tried lot of things - create new instance of player (player = avaudioplayer()) - player.pause() , player.play() not see doing wrong really.
this code :
import uikit import avfoundation
class lecteurviewcontroller: uiviewcontroller {
var chansonselected: chanson? = nil var lecteur:avaudioplayer = avaudioplayer() var timer1 = timer() var timer2 = timer() @iboutlet weak var dureechansonslider: uislider! @iboutlet weak var chansonimageview: uiimageview! @iboutlet weak var chansonvolumeslider: uislider! @iboutlet weak var debutlabel: uilabel! @iboutlet weak var finlabel: uilabel! @ibaction func stopmusicaction(_ sender: uibarbuttonitem) { var player = avaudioplayer() lecteur.stop() lecteurmanager.isactive = false } @ibaction func pausemusicaction(_ sender: uibarbuttonitem) { var player = avaudioplayer() lecteur.pause() lecteurmanager.isactive = false } @ibaction func jouermusicaction(_ sender: uibutton) { if lecteurmanager.isactive { changesong() print("lecteur déjà en cours") } else { var player = avaudioplayer() lecteur.play() } print(lecteurmanager.isactive ) lecteurmanager.isactive = true } func changesong() { lecteur.stop() //lecteur = avaudioplayer() jouerlecteurmp3() print(chansonselected!) lecteur.play() } override func viewdidload() { super.viewdidload() configureview() } override func viewdidappear(_ animated: bool) { super.viewdidappear(animated) jouerlecteurmp3() } func configureview() { self.title = (chansonselected!.titre!).capitalized chansonimageview.image = uiimage(named: "\(chansonselected!.image).jpgs") //formatter 'back' button let backbtn = uibarbuttonitem(title: "< playlist", style: .plain, target: self, action: #selector(lecteurviewcontroller.reset(_sender:))) self.navigationitem.leftbarbuttonitem = backbtn self.navigationcontroller?.navigationbar.tintcolor = uicolor.white //contrôler volume chanson chansonvolumeslider.addtarget(self, action: #selector(lecteurviewcontroller.ajustervolume(_ :)), for: uicontrolevents.valuechanged) //contrôler durée chanson dureechansonslider.addtarget(self, action: #selector(lecteurviewcontroller.ajusterdurée(_ :)), for: uicontrolevents.valuechanged) updateui() } func updateui() { //indiquer position chanson timer1 = timer.scheduledtimer(timeinterval: 1, target: self, selector: #selector(lecteurviewcontroller.mettreajourdurée), userinfo: nil, repeats: true) //afficher durée chanson timer2 = timer.scheduledtimer(timeinterval: 1, target: self, selector: #selector(lecteurviewcontroller.afficherdurée), userinfo: nil, repeats: true) } func reset(_sender:uibarbuttonitem) { self.navigationcontroller?.popviewcontroller(animated: true) } func ajustervolume(_ sender:uislider) { //print("volume ajusté \(chansonvolumeslider.value)") lecteur.volume = chansonvolumeslider.value } func ajusterdurée(_ sender:uislider) { lecteur.currenttime = timeinterval(dureechansonslider.value) } func mettreajourdurée() { dureechansonslider.value = float(lecteur.currenttime) } func afficherdurée() { print("durée actuelle: \(lecteur.duration - lecteur.currenttime)") debutlabel.text = retournerpositionactuelle() finlabel.text = retournerdureetotal() } func retournerpositionactuelle() -> string { let seconds = int(lecteur.currenttime) % 60 let minutes = (int(lecteur.currenttime) / 60) % 60 return string(format: "%0.2i:%0.2i", minutes, seconds) } func retournerdureetotal() -> string { let seconds = int(lecteur.currenttime) % 60 let minutes = (int(lecteur.currenttime) / 60) % 60 return string(format: "%0.2i:%0.2i", minutes, seconds) } func jouerlecteurmp3() { let chanson = "bensound-\(chansonselected!.titre!)" let fichiermp3 = bundle.main.path(forresource: chanson, oftype: "mp3") { try lecteur = avaudioplayer(contentsof: url(string: fichiermp3!)!) dureechansonslider.maximumvalue = float(lecteur.duration) } catch { print("erreur lecture mp3") } }
}
Comments
Post a Comment