swift - 如何快速制作音频播放器?

标签 swift avaudioplayer

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

首先我创建音频播放器对象,例如:

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/

相关文章:

ios - 使用 SpriteKit 设置地面节点?

swift - 为什么AVAudioPlayer的currentTime和duration为零?

ios - AVAudioSession .defaultToSpeaker 更改麦克风输入

ios - 初始化 AVAudioPlayer 以用于多个函数

ios - UIImageView 拖放到另一个上

ios - ARKit - 最初将对象以相机的特定航向/角度放置在 ARSKView 中

ios - Swift-获取自计时器启动以来经过了多少秒/毫秒

ios - AudioKit 4.3 : record audio, 离线渲染,然后播放

ios - 如何管理每个tableviewCell中的AVAudioPlayer isPlaying?

xcode - iOS 应用仅通过耳机播放声音