From e22ff1bbfe4f9d492bb2acefd867abb17983e292 Mon Sep 17 00:00:00 2001 From: Nicholas Tinsley Date: Fri, 8 Dec 2023 09:11:00 -0500 Subject: [PATCH] Preserve lobby audio device choice. --- .../audio/FullSignalAudioManagerApi31.kt | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/webrtc/audio/FullSignalAudioManagerApi31.kt b/app/src/main/java/org/thoughtcrime/securesms/webrtc/audio/FullSignalAudioManagerApi31.kt index 15a3e30c0a..e662dc789b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/webrtc/audio/FullSignalAudioManagerApi31.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/webrtc/audio/FullSignalAudioManagerApi31.kt @@ -109,14 +109,23 @@ class FullSignalAudioManagerApi31(context: Context, eventListener: EventListener val volume: Float = androidAudioManager.ringVolumeWithMinimum() soundPool.play(disconnectedSoundId, volume, volume, 0, 0, 1.0f) } - state = State.UNINITIALIZED androidAudioManager.unregisterAudioDeviceCallback(deviceCallback) - androidAudioManager.clearCommunicationDevice() - setSpeakerphoneOn(savedIsSpeakerPhoneOn) - setMicrophoneMute(savedIsMicrophoneMute) - androidAudioManager.mode = savedAudioMode + if (state == State.UNINITIALIZED && userSelectedAudioDevice != null) { + Log.d( + TAG, + "Stopping audio manager after selecting audio device but never initializing. " + + "This indicates a service spun up solely to set audio device. " + + "Therefore skipping audio device reset." + ) + } else { + androidAudioManager.clearCommunicationDevice() + setSpeakerphoneOn(savedIsSpeakerPhoneOn) + setMicrophoneMute(savedIsMicrophoneMute) + androidAudioManager.mode = savedAudioMode + } androidAudioManager.abandonCallAudioFocus() Log.d(TAG, "Abandoned audio focus for VOICE_CALL streams") + state = State.UNINITIALIZED Log.d(TAG, "Stopped") }