From 57e00931fc4950220ee72cd38c30dff922ce833a Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Fri, 3 Apr 2020 16:07:07 +0200 Subject: [PATCH] Added default output audio device setting --- .../viewmodels/AudioSettingsViewModel.kt | 30 +++++++++++++++++++ .../res/layout/settings_audio_fragment.xml | 8 +++++ app/src/main/res/values/strings.xml | 2 ++ 3 files changed, 40 insertions(+) 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 432106d3a..de06d0309 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 @@ -23,6 +23,7 @@ import androidx.databinding.ViewDataBinding import androidx.lifecycle.MutableLiveData import org.linphone.R import org.linphone.activities.main.settings.SettingListenerStub +import org.linphone.core.AudioDevice import org.linphone.core.Core import org.linphone.core.CoreListenerStub import org.linphone.core.EcCalibratorStatus @@ -84,6 +85,18 @@ class AudioSettingsViewModel : GenericSettingsViewModel() { } val adaptiveRateControl = MutableLiveData() + val outputAudioDeviceListener = object : SettingListenerStub() { + override fun onListValueChanged(position: Int) { + val values = outputAudioDeviceValues.value.orEmpty() + if (values.size > position) { + core.defaultOutputAudioDevice = values[position] + } + } + } + val outputAudioDeviceIndex = MutableLiveData() + val outputAudioDeviceLabels = MutableLiveData>() + private val outputAudioDeviceValues = MutableLiveData>() + val codecBitrateListener = object : SettingListenerStub() { override fun onListValueChanged(position: Int) { for (payloadType in core.audioPayloadTypes) { @@ -122,6 +135,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) + initOutputAudioDevicesList() initCodecBitrateList() microphoneGain.value = core.micGainDb playbackGain.value = core.playbackGainDb @@ -167,6 +181,22 @@ class AudioSettingsViewModel : GenericSettingsViewModel() { core.stopEchoTester() } + private fun initOutputAudioDevicesList() { + val labels = arrayListOf() + val values = arrayListOf() + for (audioDevice in core.audioDevices) { + if (audioDevice.hasCapability(AudioDevice.Capabilities.CapabilityPlay)) { + labels.add(audioDevice.id) + values.add(audioDevice) + } + } + outputAudioDeviceLabels.value = labels + outputAudioDeviceValues.value = values + + val default = core.defaultOutputAudioDevice + outputAudioDeviceIndex.value = values.indexOf(default) + } + private fun initCodecBitrateList() { val labels = arrayListOf() for (value in codecBitrateValues) { diff --git a/app/src/main/res/layout/settings_audio_fragment.xml b/app/src/main/res/layout/settings_audio_fragment.xml index f670e2258..50ef0a431 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 output audio device + Changes will take effect starting next call Codec bitrate limit Microphone gain