Объект AVAudioPlayer не стабилен в swift - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть глобальная переменная audioPlayer.Каждый раз, когда пользователь нажимает кнопку «Buzz», он вызывает эту функцию:

static func playBuzz() {
    if audioPlayer == nil {
        let url = Bundle.main.path(forResource: "6", ofType: "wav")!
        let contentURL = URL.init(fileURLWithPath: url)
        do {
            audioPlayer = try AVAudioPlayer(contentsOf: contentURL)
            audioPlayer.volume = 1.0
        } catch {
        }
    }
    print("play buzz ")
    DispatchQueue.global().async {
        audioPlayer.prepareToPlay()
        audioPlayer.play()
    }
}

}

Но когда я вызываю это, он воспроизводит звук очень случайно.Иногда он воспроизводит звук, иногда не воспроизводит звук.Как я могу решить эту проблему?

1 Ответ

0 голосов
/ 29 сентября 2018

Ответ таков: при воспроизведении audioPlaying, я называю play, он не будет обрабатываться.Мой аудиоплеер имеет 1 секунду.Чтобы исправить это, я поставил еще строки:

if audioPlayer.isPlaying {
        DispatchQueue.main.asyncAfter(deadline: .now() + 1) { //Make sure to call play() after audioPlayer finish playing. 
            audioPlayer.prepareToPlay()
            audioPlayer.play()
            return 
        }
    }
...