fix: access AudioFocusChangeListener on main thread (#4821)

This commit is contained in:
Kamil Moskała
2026-01-20 19:44:48 +01:00
committed by GitHub
parent 44812c29d0
commit 28e295a6ee
@@ -29,28 +29,30 @@ class AudioFocusManager() {
}
private val audioFocusChangeListener = AudioManager.OnAudioFocusChangeListener { focusChange ->
when (focusChange) {
AudioManager.AUDIOFOCUS_GAIN -> {
unDuckActivePlayers()
}
AudioManager.AUDIOFOCUS_LOSS -> {
pauseActivePlayers()
currentMixAudioMode = null
audioFocusRequest = null
}
AudioManager.AUDIOFOCUS_LOSS_TRANSIENT -> {
val mixAudioMode = determineRequiredMixMode()
if (mixAudioMode != MixAudioMode.MIXWITHOTHERS) {
Threading.runOnMainThread {
when (focusChange) {
AudioManager.AUDIOFOCUS_GAIN -> {
unDuckActivePlayers()
}
AudioManager.AUDIOFOCUS_LOSS -> {
pauseActivePlayers()
currentMixAudioMode = null
audioFocusRequest = null
}
}
AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK -> {
val mixAudioMode = determineRequiredMixMode()
when (mixAudioMode) {
MixAudioMode.DONOTMIX -> pauseActivePlayers()
else -> duckActivePlayers()
AudioManager.AUDIOFOCUS_LOSS_TRANSIENT -> {
val mixAudioMode = determineRequiredMixMode()
if (mixAudioMode != MixAudioMode.MIXWITHOTHERS) {
pauseActivePlayers()
currentMixAudioMode = null
audioFocusRequest = null
}
}
AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK -> {
val mixAudioMode = determineRequiredMixMode()
when (mixAudioMode) {
MixAudioMode.DONOTMIX -> pauseActivePlayers()
else -> duckActivePlayers()
}
}
}
}