From 92e8f125f99fcc20ea42e674ad19b0ae1b7cde79 Mon Sep 17 00:00:00 2001 From: Nicholas Date: Tue, 9 May 2023 16:18:49 -0400 Subject: [PATCH] Improve nullability for setting communication devices. --- .../securesms/webrtc/audio/AudioManagerCompat.java | 2 +- .../webrtc/audio/FullSignalAudioManagerApi31.kt | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/webrtc/audio/AudioManagerCompat.java b/app/src/main/java/org/thoughtcrime/securesms/webrtc/audio/AudioManagerCompat.java index 3995e3a575..9b7936c440 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/webrtc/audio/AudioManagerCompat.java +++ b/app/src/main/java/org/thoughtcrime/securesms/webrtc/audio/AudioManagerCompat.java @@ -122,7 +122,7 @@ public abstract class AudioManagerCompat { } @RequiresApi(31) - public boolean setCommunicationDevice(@Nullable AudioDeviceInfo device) { + public boolean setCommunicationDevice(@NonNull AudioDeviceInfo device) { return audioManager.setCommunicationDevice(device); } 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 b8497149de..81f54fb7aa 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 @@ -166,11 +166,11 @@ class FullSignalAudioManagerApi31(context: Context, eventListener: EventListener val currentAudioDevice: AudioDeviceInfo? = androidAudioManager.communicationDevice val availableCommunicationDevices: List = androidAudioManager.availableCommunicationDevices - if (userSelectedAudioDevice != null) { - androidAudioManager.communicationDevice = userSelectedAudioDevice - eventListener?.onAudioDeviceChanged(AudioDeviceMapping.fromPlatformType(userSelectedAudioDevice!!.type), availableCommunicationDevices.map { AudioDeviceMapping.fromPlatformType(it.type) }.toSet()) + var candidate: AudioDeviceInfo? = userSelectedAudioDevice + if (candidate != null && candidate.id != 0) { + androidAudioManager.setCommunicationDevice(candidate) + eventListener?.onAudioDeviceChanged(AudioDeviceMapping.fromPlatformType(candidate.type), availableCommunicationDevices.map { AudioDeviceMapping.fromPlatformType(it.type) }.toSet()) } else { - var candidate: AudioDeviceInfo? = null val searchOrder: List = listOf(AudioDevice.BLUETOOTH, AudioDevice.WIRED_HEADSET, defaultAudioDevice, AudioDevice.EARPIECE, AudioDevice.SPEAKER_PHONE, AudioDevice.NONE).distinct() for (deviceType in searchOrder) { candidate = availableCommunicationDevices.find { AudioDeviceMapping.fromPlatformType(it.type) == deviceType } @@ -186,7 +186,7 @@ class FullSignalAudioManagerApi31(context: Context, eventListener: EventListener } else -> { Log.d(TAG, "Switching to new device of type ${candidate.type} from ${currentAudioDevice?.type}") - androidAudioManager.communicationDevice = candidate + androidAudioManager.setCommunicationDevice(candidate) eventListener?.onAudioDeviceChanged(AudioDeviceMapping.fromPlatformType(candidate.type), availableCommunicationDevices.map { AudioDeviceMapping.fromPlatformType(it.type) }.toSet()) } }