Improved audio device name in advanced settings

This commit is contained in:
Sylvain Berfini 2025-07-04 15:13:46 +02:00
parent da581c3737
commit bb81957aab
6 changed files with 54 additions and 56 deletions

View file

@ -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

View file

@ -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 {

View file

@ -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)

View file

@ -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})"
}
}
}
}

View file

@ -708,6 +708,7 @@
<string name="call_dialog_zrtp_security_alert_try_again">Réessayer</string>
<string name="call_dialog_zrtp_security_alert_message">La confidentialité de votre appel peut être compromise !</string>
<string name="call_audio_device_type_microphone">Microphone</string>
<string name="call_audio_device_type_earpiece">Oreillette</string>
<string name="call_audio_device_type_speaker">Haut parleur</string>
<string name="call_audio_device_type_bluetooth">Bluetooth (%s)</string>

View file

@ -750,6 +750,7 @@
<string name="call_dialog_zrtp_security_alert_try_again">Try again</string>
<string name="call_dialog_zrtp_security_alert_message">This call confidentiality may be compromise!</string>
<string name="call_audio_device_type_microphone">Microphone</string>
<string name="call_audio_device_type_earpiece">Earpiece</string>
<string name="call_audio_device_type_speaker">Speaker</string>
<string name="call_audio_device_type_bluetooth">Bluetooth (%s)</string>