Added default output audio device setting

This commit is contained in:
Sylvain Berfini 2020-04-03 16:07:07 +02:00
parent 2dfbdd8958
commit 57e00931fc
3 changed files with 40 additions and 0 deletions

View file

@ -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<Boolean>()
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<Int>()
val outputAudioDeviceLabels = MutableLiveData<ArrayList<String>>()
private val outputAudioDeviceValues = MutableLiveData<ArrayList<AudioDevice>>()
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<String>()
val values = arrayListOf<AudioDevice>()
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<String>()
for (value in codecBitrateValues) {

View file

@ -91,6 +91,14 @@
linphone:listener="@{viewModel.adaptiveRateControlListener}"
linphone:checked="@={viewModel.adaptiveRateControl}"/>
<include
layout="@layout/settings_widget_list"
linphone:title="@{@string/audio_settings_output_device_title}"
linphone:subtitle="@{@string/audio_settings_output_device_summary}"
linphone:listener="@{viewModel.outputAudioDeviceListener}"
linphone:selectedIndex="@{viewModel.outputAudioDeviceIndex}"
linphone:labels="@{viewModel.outputAudioDeviceLabels}"/>
<include
layout="@layout/settings_widget_list"
linphone:title="@{@string/audio_settings_codec_bitrate_title}"

View file

@ -282,6 +282,8 @@
<string name="audio_settings_echo_tester_summary_is_running">Echo tester is running</string>
<string name="audio_settings_adaptive_rate_control_title">Adaptive rate control</string>
<string name="audio_settings_adaptive_rate_control_summary"></string>
<string name="audio_settings_output_device_title">Default output audio device</string>
<string name="audio_settings_output_device_summary">Changes will take effect starting next call</string>
<string name="audio_settings_codec_bitrate_title">Codec bitrate limit</string>
<string name="audio_settings_codec_bitrate_summary"></string>
<string name="audio_settings_microphone_gain_title">Microphone gain</string>