SoundPool |检查流是否正在播放

时间:2018-10-13 06:16:22

标签: android android-audiomanager soundpool

我正在使用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 :(得分:0)

您滥用audioManager.isStreamMute()。该函数采用AudioManager常量,例如STREAM_MUSIC。与SoundPool.load()返回的声音ID不同。

isStreamMute()不会告诉您声音是否正在播放。这更多是为了检测设备的静音设置。用户是否选择了静音/振动/静音等。

相反,只需使用布尔变量跟踪您的播放状态即可。

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