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 -> private val audioFocusChangeListener = AudioManager.OnAudioFocusChangeListener { focusChange ->
when (focusChange) { Threading.runOnMainThread {
AudioManager.AUDIOFOCUS_GAIN -> { when (focusChange) {
unDuckActivePlayers() AudioManager.AUDIOFOCUS_GAIN -> {
} unDuckActivePlayers()
AudioManager.AUDIOFOCUS_LOSS -> { }
pauseActivePlayers() AudioManager.AUDIOFOCUS_LOSS -> {
currentMixAudioMode = null
audioFocusRequest = null
}
AudioManager.AUDIOFOCUS_LOSS_TRANSIENT -> {
val mixAudioMode = determineRequiredMixMode()
if (mixAudioMode != MixAudioMode.MIXWITHOTHERS) {
pauseActivePlayers() pauseActivePlayers()
currentMixAudioMode = null currentMixAudioMode = null
audioFocusRequest = null audioFocusRequest = null
} }
} AudioManager.AUDIOFOCUS_LOSS_TRANSIENT -> {
AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK -> { val mixAudioMode = determineRequiredMixMode()
val mixAudioMode = determineRequiredMixMode() if (mixAudioMode != MixAudioMode.MIXWITHOTHERS) {
when (mixAudioMode) { pauseActivePlayers()
MixAudioMode.DONOTMIX -> pauseActivePlayers() currentMixAudioMode = null
else -> duckActivePlayers() audioFocusRequest = null
}
}
AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK -> {
val mixAudioMode = determineRequiredMixMode()
when (mixAudioMode) {
MixAudioMode.DONOTMIX -> pauseActivePlayers()
else -> duckActivePlayers()
}
} }
} }
} }