AVAudioPlayer 第一次不播放

AVAudioPlayer doesn't play the first time

第一次按下按钮时,我无法通过 AVAudioPlayer 播放声音。当我再次点击它时,它工作正常。

这是我正在使用的代码,这是在我的 viewDidLoad() 中调用的

func loadSounds(){
    do{
        try audioPlayerL = AVAudioPlayer(contentsOfURL: startListening!)
        try audioPlayerE = AVAudioPlayer(contentsOfURL: doneListening!)
    }
    catch{

    }
    audioPlayerL.delegate = self
    audioPlayerL.prepareToPlay()
    audioPlayerE.delegate = self
    audioPlayerE.prepareToPlay()
}

播放文件的方法如下

func playSound(){
    if(startedListening == true){
        audioPlayerL.play()
    }
    else{
        audioPlayerE.play()
    }
}

我完全不知道为什么它第一次没有播放。在模拟器上运行没有任何问题。 运行 在我的 iPhone 6 上它第一次失败了。

我检查了一下,它也没有在任何地方抛出错误。

所以这已经关闭了,任何有同样问题的人都知道这已经解决了。就像马尔可夫说的那样,添加这行代码就解决了

try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, withOptions: AVAudioSessionCategoryOptions.MixWithOthers)

总数是这样的

一段加载声音的代码

func loadSounds(){
    do{
        try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, withOptions: AVAudioSessionCategoryOptions.MixWithOthers)
        try audioPlayerL = AVAudioPlayer(contentsOfURL: startListening!)
        try audioPlayerE = AVAudioPlayer(contentsOfURL: doneListening!)
    }
    catch{
        print("error")
    }
    audioPlayerL.delegate = self
    audioPlayerL.prepareToPlay()
    audioPlayerE.delegate = self
    audioPlayerE.prepareToPlay()
}

被调用以播放声音的方法

func playSound(){
    if(startedListening == true){
        audioPlayerL.play()
    }
    else{
        audioPlayerE.play()
    }
}