我正在使用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)
}}
**
答案 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)
}