AVAudioPlayer没有第一次播放

时间:2016-02-12 10:16:04

标签: ios swift avaudioplayer

第一次按下按钮时,我遇到通过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上运行它第一次失败。

我检查了它并没有在任何地方抛出错误。

1 个答案:

答案 0 :(得分:1)

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

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()
    }
}