我制作了音频播放器。我实现了播放列表和播放音频后台功能。我需要识别在后台播放的音频。
首先我创建音频播放器对象,例如:
var mp3Player:AVAudioPlayer?=AVAudioPlayer()
var firstLoad=true
var playingType_Index=0
var speedType_Index=0
当我从列表中单击音频时,我将单击的音频放入我的selectedAudio
let audios=[
[
"image":UIImage.fontAwesomeIconWithName(.Headphones, textColor: UIColor(colorLiteralRed: 223/255, green: 156/255, blue: 104/255, alpha: 1.0), size: CGSizeMake(35, 35)),
"title": "Audio1",
"desc":"Erkemin",
"time":3,
"src":NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("audio1", ofType: "mp3")!)
]
]
var selectedAudio=[
"id":"",
"status":"",
"image":"",
"title": "",
"desc":"",
"time":0,
"src":""
]
func playAudio(sender:AnyObject){
firstLoad=false
backwardBtn.enabled=true
step_backward.enabled=true
play_pauseBtn.enabled=true
stopBtn.enabled=true
step_forward.enabled=true
forwardBtn.enabled=true
audioSlider.enabled=true
selectedAudio=audios[sender.tag]
selectedAudio["id"]=sender.tag
selectedAudio["status"]="true"
music()
tableView.reloadData()
}
我正在使用 selectedAUdio
来识别现在播放的音频。但是,当转到其他 View 时,我的音频继续播放,但我选择的音频为零。
我该怎么做?
最佳答案
我认为您可能会遇到一些问题,例如重新创建此 View :如果您启动此 View 并 playAudio()
,selectAudio
属性将填充您的参数,但是由于某种原因,您似乎重新制作了此 View ,以便您的 selectedAudio 返回默认值(空字符串)。
如果您需要使用他的方法 stop
停止播放器,您可以执行如下代码所示的操作:
func stopMp3Player() {
if let player = mp3Player {
if player.playing {
player.stop()
}
}
}
警告:当您构建此方法时(您也可以暂停),您应该始终检查您的 mp3Player 是否不为 nil 以避免崩溃。
关于你的玩法我会做类似的事情:
func playMp3Player(filename: String) {
let url = NSBundle.mainBundle().URLForResource(filename, withExtension: nil)
if (url == nil) {
print("Could not find file: \(filename)")
return
}
do { mp3Player = try AVAudioPlayer(contentsOfURL: url!, fileTypeHint: nil) }
catch let error as NSError { print(error.description) }
if let player = mp3Player {
player.volume = // set your volume here
player.numberOfLoops = 0 // set the repeating
player.prepareToPlay()
player.play()
}
}
关于swift - 如何快速制作音频播放器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38890191/