diff --git a/app/src/main/java/org/linphone/activities/main/settings/viewmodels/AudioSettingsViewModel.kt b/app/src/main/java/org/linphone/activities/main/settings/viewmodels/AudioSettingsViewModel.kt index de06d0309..4a348ce2e 100644 --- a/app/src/main/java/org/linphone/activities/main/settings/viewmodels/AudioSettingsViewModel.kt +++ b/app/src/main/java/org/linphone/activities/main/settings/viewmodels/AudioSettingsViewModel.kt @@ -85,6 +85,18 @@ class AudioSettingsViewModel : GenericSettingsViewModel() { } val adaptiveRateControl = MutableLiveData() + val inputAudioDeviceListener = object : SettingListenerStub() { + override fun onListValueChanged(position: Int) { + val values = inputAudioDeviceValues.value.orEmpty() + if (values.size > position) { + core.defaultInputAudioDevice = values[position] + } + } + } + val inputAudioDeviceIndex = MutableLiveData() + val inputAudioDeviceLabels = MutableLiveData>() + private val inputAudioDeviceValues = MutableLiveData>() + val outputAudioDeviceListener = object : SettingListenerStub() { override fun onListValueChanged(position: Int) { val values = outputAudioDeviceValues.value.orEmpty() @@ -135,6 +147,7 @@ class AudioSettingsViewModel : GenericSettingsViewModel() { prefs.getString(R.string.audio_settings_echo_canceller_calibration_summary) } echoTesterStatus.value = prefs.getString(R.string.audio_settings_echo_tester_summary) + initInputAudioDevicesList() initOutputAudioDevicesList() initCodecBitrateList() microphoneGain.value = core.micGainDb @@ -181,10 +194,26 @@ class AudioSettingsViewModel : GenericSettingsViewModel() { core.stopEchoTester() } + private fun initInputAudioDevicesList() { + val labels = arrayListOf() + val values = arrayListOf() + for (audioDevice in core.extendedAudioDevices) { + if (audioDevice.hasCapability(AudioDevice.Capabilities.CapabilityRecord)) { + labels.add(audioDevice.id) + values.add(audioDevice) + } + } + inputAudioDeviceLabels.value = labels + inputAudioDeviceValues.value = values + + val default = core.defaultInputAudioDevice + inputAudioDeviceIndex.value = values.indexOf(default) + } + private fun initOutputAudioDevicesList() { val labels = arrayListOf() val values = arrayListOf() - for (audioDevice in core.audioDevices) { + for (audioDevice in core.extendedAudioDevices) { if (audioDevice.hasCapability(AudioDevice.Capabilities.CapabilityPlay)) { labels.add(audioDevice.id) values.add(audioDevice) diff --git a/app/src/main/res/layout/settings_audio_fragment.xml b/app/src/main/res/layout/settings_audio_fragment.xml index 50ef0a431..3bf3d7e50 100644 --- a/app/src/main/res/layout/settings_audio_fragment.xml +++ b/app/src/main/res/layout/settings_audio_fragment.xml @@ -91,6 +91,14 @@ linphone:listener="@{viewModel.adaptiveRateControlListener}" linphone:checked="@={viewModel.adaptiveRateControl}"/> + + Echo tester is running Adaptive rate control + Default input audio device + Changes will take effect starting next call Default output audio device Changes will take effect starting next call Codec bitrate limit