如何快速制作audioplayer?

时间:2016-08-11 07:40:33

标签: swift avaudioplayer

我制作了音频播放器。我实现播放列表和播放音频背景功能。我需要识别在后台播放的音频。

Firts我创建音频播放器对象,如:

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来识别现在播放的音频。但是当转到其他视图时,我的音频会继续播放,但我选择的音频为零。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

我认为您可能会遇到一些问题,例如重新创建此视图:如果您启动此视图并playAudio(),则selectAudio属性会填充您的参数,但出于某种原因,您似乎需要重新制作此视图使您的selectedAudio返回默认值(空字符串)。

如果您需要使用方法stop停止播放,您可以执行以下代码:

func stopMp3Player() {
   if let player = mp3Player {
      if player.playing {
         player.stop()
      }     
   }
}

警告:当您构建此方法时(您也可以暂停),您应该始终检查您的mp3Player是否为零以避免崩溃。

关于你的游戏方法我会做类似的事情:

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()
        }
}
相关问题