2016-02-12 45 views
0

第一次按下按钮时,播放通过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上,第一次失败。

我检查过,它不会在任何地方发生错误。

+2

尝试解决方法AVAudioSession,d其他玩家可能会发生冲突。在创建玩家之前,尝试启用混合会话。 '[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback withOptions:AVAudioSessionCategoryOptionMixWithOthers error:&error];' – markov

+0

实际上它做了谢谢! – NoSixties

回答

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