From bb81957aabb3e3147a31e2e455286ef94b7c4561 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Fri, 4 Jul 2025 15:13:46 +0200 Subject: [PATCH] Improved audio device name in advanced settings --- .../ui/call/viewmodel/CurrentCallViewModel.kt | 30 ++------------- .../viewmodel/MeetingWaitingRoomViewModel.kt | 31 ++------------- .../settings/viewmodel/SettingsViewModel.kt | 9 +++-- .../java/org/linphone/utils/LinphoneUtils.kt | 38 +++++++++++++++++++ app/src/main/res/values-fr/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 6 files changed, 54 insertions(+), 56 deletions(-) diff --git a/app/src/main/java/org/linphone/ui/call/viewmodel/CurrentCallViewModel.kt b/app/src/main/java/org/linphone/ui/call/viewmodel/CurrentCallViewModel.kt index c4e6026eb..16615afa8 100644 --- a/app/src/main/java/org/linphone/ui/call/viewmodel/CurrentCallViewModel.kt +++ b/app/src/main/java/org/linphone/ui/call/viewmodel/CurrentCallViewModel.kt @@ -734,39 +734,17 @@ class CurrentCallViewModel for (device in audioDevices) { // Only list output audio devices if (!device.hasCapability(AudioDevice.Capabilities.CapabilityPlay)) continue - - val name = when (device.type) { + when (device.type) { AudioDevice.Type.Earpiece -> { earpieceFound = true - AppUtils.getString(R.string.call_audio_device_type_earpiece) } AudioDevice.Type.Speaker -> { speakerFound = true - AppUtils.getString(R.string.call_audio_device_type_speaker) } - AudioDevice.Type.Headset -> { - AppUtils.getString(R.string.call_audio_device_type_headset) - } - AudioDevice.Type.Headphones -> { - AppUtils.getString(R.string.call_audio_device_type_headphones) - } - AudioDevice.Type.Bluetooth -> { - AppUtils.getFormattedString( - R.string.call_audio_device_type_bluetooth, - device.deviceName - ) - } - AudioDevice.Type.HearingAid -> { - AppUtils.getFormattedString( - R.string.call_audio_device_type_hearing_aid, - device.deviceName - ) - } - AudioDevice.Type.Hdmi -> { - AppUtils.getString(R.string.call_audio_device_type_hdmi) - } - else -> device.deviceName + else -> {} } + + val name = LinphoneUtils.getAudioDeviceName(device) val isCurrentlyInUse = device.type == currentDevice?.type && device.deviceName == currentDevice.deviceName val model = AudioDeviceModel(device, name, device.type, isCurrentlyInUse, true) { // onSelected diff --git a/app/src/main/java/org/linphone/ui/main/meetings/viewmodel/MeetingWaitingRoomViewModel.kt b/app/src/main/java/org/linphone/ui/main/meetings/viewmodel/MeetingWaitingRoomViewModel.kt index da09c525b..2ad451122 100644 --- a/app/src/main/java/org/linphone/ui/main/meetings/viewmodel/MeetingWaitingRoomViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/meetings/viewmodel/MeetingWaitingRoomViewModel.kt @@ -41,8 +41,8 @@ import org.linphone.core.tools.Log import org.linphone.ui.GenericViewModel import org.linphone.ui.call.model.AudioDeviceModel import org.linphone.ui.main.contacts.model.ContactAvatarModel -import org.linphone.utils.AppUtils import org.linphone.utils.Event +import org.linphone.utils.LinphoneUtils import org.linphone.utils.TimestampUtils class MeetingWaitingRoomViewModel @@ -324,40 +324,17 @@ class MeetingWaitingRoomViewModel for (device in audioDevices) { // Only list output audio devices if (!device.hasCapability(AudioDevice.Capabilities.CapabilityPlay)) continue - - val name = when (device.type) { + when (device.type) { AudioDevice.Type.Earpiece -> { earpieceAudioDevice = device - AppUtils.getString(R.string.call_audio_device_type_earpiece) } AudioDevice.Type.Speaker -> { speakerAudioDevice = device - AppUtils.getString(R.string.call_audio_device_type_speaker) } - AudioDevice.Type.Headset -> { - AppUtils.getString(R.string.call_audio_device_type_headset) - } - AudioDevice.Type.Headphones -> { - AppUtils.getString(R.string.call_audio_device_type_headphones) - } - AudioDevice.Type.Bluetooth -> { - AppUtils.getFormattedString( - R.string.call_audio_device_type_bluetooth, - device.deviceName - ) - } - AudioDevice.Type.HearingAid -> { - AppUtils.getFormattedString( - R.string.call_audio_device_type_hearing_aid, - device.deviceName - ) - } - AudioDevice.Type.Hdmi -> { - AppUtils.getString(R.string.call_audio_device_type_hdmi) - } - else -> device.deviceName + else -> {} } + val name = LinphoneUtils.getAudioDeviceName(device) val currentDevice = if (::selectedOutputAudioDevice.isInitialized) { selectedOutputAudioDevice } else { diff --git a/app/src/main/java/org/linphone/ui/main/settings/viewmodel/SettingsViewModel.kt b/app/src/main/java/org/linphone/ui/main/settings/viewmodel/SettingsViewModel.kt index 774235503..acf6dea16 100644 --- a/app/src/main/java/org/linphone/ui/main/settings/viewmodel/SettingsViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/settings/viewmodel/SettingsViewModel.kt @@ -45,6 +45,7 @@ import org.linphone.ui.main.settings.model.CardDavLdapModel import org.linphone.ui.main.settings.model.CodecModel import org.linphone.utils.AppUtils import org.linphone.utils.Event +import org.linphone.utils.LinphoneUtils class SettingsViewModel @UiThread @@ -1031,10 +1032,11 @@ class SettingsViewModel var inputIndex = 0 val defaultInputAudioDevice = core.defaultInputAudioDevice - Log.i("$TAG Current default input audio device is [${defaultInputAudioDevice?.id}]") + Log.i("$TAG Current default input audio device ID is [${defaultInputAudioDevice?.id}]") for (audioDevice in core.extendedAudioDevices) { if (audioDevice.hasCapability(AudioDevice.Capabilities.CapabilityRecord)) { - inputAudioDeviceLabels.add(audioDevice.id) + Log.i("$TAG Found record device [${audioDevice.deviceName}] with audio driver [${audioDevice.driverName}] and type [${audioDevice.type}]") + inputAudioDeviceLabels.add(LinphoneUtils.getAudioDeviceName(audioDevice)) inputAudioDeviceValues.add(audioDevice) if (audioDevice.id == defaultInputAudioDevice?.id) { inputAudioDeviceIndex.postValue(inputIndex) @@ -1048,7 +1050,8 @@ class SettingsViewModel Log.i("$TAG Current default output audio device is [${defaultOutputAudioDevice?.id}]") for (audioDevice in core.extendedAudioDevices) { if (audioDevice.hasCapability(AudioDevice.Capabilities.CapabilityPlay)) { - outputAudioDeviceLabels.add(audioDevice.id) + Log.i("$TAG Found playback device [${audioDevice.deviceName}] with audio driver [${audioDevice.driverName}] and type [${audioDevice.type}]") + outputAudioDeviceLabels.add(LinphoneUtils.getAudioDeviceName(audioDevice)) outputAudioDeviceValues.add(audioDevice) if (audioDevice.id == defaultOutputAudioDevice?.id) { outputAudioDeviceIndex.postValue(outputIndex) diff --git a/app/src/main/java/org/linphone/utils/LinphoneUtils.kt b/app/src/main/java/org/linphone/utils/LinphoneUtils.kt index 1c366547e..83d8421a3 100644 --- a/app/src/main/java/org/linphone/utils/LinphoneUtils.kt +++ b/app/src/main/java/org/linphone/utils/LinphoneUtils.kt @@ -36,6 +36,7 @@ import org.linphone.R import org.linphone.contacts.getListOfSipAddresses import org.linphone.core.Account import org.linphone.core.Address +import org.linphone.core.AudioDevice import org.linphone.core.Call import org.linphone.core.Call.Dir import org.linphone.core.Call.Status @@ -667,5 +668,42 @@ class LinphoneUtils { return avatarModel } + + @WorkerThread + fun getAudioDeviceName(device: AudioDevice): String { + return when (device.type) { + AudioDevice.Type.Microphone -> { + AppUtils.getString(R.string.call_audio_device_type_microphone) + } + AudioDevice.Type.Earpiece -> { + AppUtils.getString(R.string.call_audio_device_type_earpiece) + } + AudioDevice.Type.Speaker -> { + AppUtils.getString(R.string.call_audio_device_type_speaker) + } + AudioDevice.Type.Headset -> { + AppUtils.getString(R.string.call_audio_device_type_headset) + } + AudioDevice.Type.Headphones -> { + AppUtils.getString(R.string.call_audio_device_type_headphones) + } + AudioDevice.Type.Bluetooth -> { + AppUtils.getFormattedString( + R.string.call_audio_device_type_bluetooth, + device.deviceName + ) + } + AudioDevice.Type.HearingAid -> { + AppUtils.getFormattedString( + R.string.call_audio_device_type_hearing_aid, + device.deviceName + ) + } + AudioDevice.Type.Hdmi -> { + AppUtils.getString(R.string.call_audio_device_type_hdmi) + } + else -> "${device.deviceName}(${device.type})" + } + } } } diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index c856a7fd4..588c49317 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -708,6 +708,7 @@ Réessayer La confidentialité de votre appel peut être compromise ! + Microphone Oreillette Haut parleur Bluetooth (%s) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b31ffdfe4..dfd95a60a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -750,6 +750,7 @@ Try again This call confidentiality may be compromise! + Microphone Earpiece Speaker Bluetooth (%s)