SoundPool |Проверьте поток, играет ли он или нет - PullRequest
0 голосов
/ 13 октября 2018

Я использую Soundpool для воспроизведения коротких аудиофайлов.Как только я нажимаю кнопку, она должна воспроизводить звук, а во второй раз - пауза.Я использовал функцию, подобную этой detectPlayPause(sound2, activity!!.applicationContext) Проблема в том, что она не приостанавливается и воспроизводит этот звук снова как два потока

fun detectPlayPause(sound: Int, context: Context) {
        val audioManager = context.getSystemService(AUDIO_SERVICE) as AudioManager
        if (audioManager.isStreamMute(sound)) {
            soundPool.play(sound, 1F, 1F, 0, -1, 1F)
        } else {
            soundPool.pause(sound)
        }}

**

1 Ответ

0 голосов
/ 14 октября 2018

Вы неправильно используете audioManager.isStreamMute().Эта функция принимает AudioManager константу, как STREAM_MUSIC.Это совсем не то, что идентификатор звука, возвращаемый из SoundPool.load().

isStreamMute(), не скажет вам, воспроизводится ли ваш звук.Это больше для определения настроек отключения устройства;выбрал ли пользователь приглушение / вибрацию / беззвучный режим и т. д.

Вместо этого просто отслеживайте свое состояние воспроизведения с помощью логической переменной.

if (!playing) {
    playing = true
    soundPool.play(sound, 1F, 1F, 0, -1, 1F)
} else {
    playing = false
    soundPool.pause(sound)
}
...