mirror of
https://github.com/Novaloop-AG/element-x-android.git
synced 2026-11-03 16:10:00 +00:00
Fix voice recording being interrupted by notifications sounds (#6438)
This commit is contained in:
committed by
GitHub
parent
c1e538f039
commit
443802944a
+15
-3
@@ -39,10 +39,17 @@ class DefaultAudioFocus(
|
|||||||
AudioManager.AUDIOFOCUS_GAIN -> {
|
AudioManager.AUDIOFOCUS_GAIN -> {
|
||||||
// Do nothing
|
// Do nothing
|
||||||
}
|
}
|
||||||
AudioManager.AUDIOFOCUS_LOSS,
|
AudioManager.AUDIOFOCUS_LOSS -> {
|
||||||
|
// Permanent focus loss (e.g., phone call) — always stop/pause.
|
||||||
|
onFocusLost()
|
||||||
|
}
|
||||||
AudioManager.AUDIOFOCUS_LOSS_TRANSIENT,
|
AudioManager.AUDIOFOCUS_LOSS_TRANSIENT,
|
||||||
AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK -> {
|
AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK -> {
|
||||||
onFocusLost()
|
// For recording, ignore transient focus losses (e.g., notification sounds).
|
||||||
|
// The AudioRecord API keeps capturing regardless.
|
||||||
|
if (requester != AudioFocusRequester.RecordVoiceMessage) {
|
||||||
|
onFocusLost()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -51,7 +58,12 @@ class DefaultAudioFocus(
|
|||||||
val audioAttributes = AudioAttributes.Builder()
|
val audioAttributes = AudioAttributes.Builder()
|
||||||
.setUsage(requester.toAudioUsage())
|
.setUsage(requester.toAudioUsage())
|
||||||
.build()
|
.build()
|
||||||
val request = AudioFocusRequest.Builder(AudioManager.AUDIOFOCUS_GAIN)
|
val focusGain = if (requester == AudioFocusRequester.RecordVoiceMessage) {
|
||||||
|
AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_EXCLUSIVE
|
||||||
|
} else {
|
||||||
|
AudioManager.AUDIOFOCUS_GAIN
|
||||||
|
}
|
||||||
|
val request = AudioFocusRequest.Builder(focusGain)
|
||||||
.setAudioAttributes(audioAttributes)
|
.setAudioAttributes(audioAttributes)
|
||||||
.setOnAudioFocusChangeListener(listener)
|
.setOnAudioFocusChangeListener(listener)
|
||||||
.setWillPauseWhenDucked(requester.willPausedWhenDucked())
|
.setWillPauseWhenDucked(requester.willPausedWhenDucked())
|
||||||
|
|||||||
Reference in New Issue
Block a user