Added setting for input audio device + use extended audio devices list for now

This commit is contained in:
Sylvain Berfini 2020-05-29 10:58:29 +02:00
parent d7642dabef
commit b414dfcbeb
3 changed files with 40 additions and 1 deletions

View file

@ -85,6 +85,18 @@ class AudioSettingsViewModel : GenericSettingsViewModel() {
} }
val adaptiveRateControl = MutableLiveData<Boolean>() val adaptiveRateControl = MutableLiveData<Boolean>()
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<Int>()
val inputAudioDeviceLabels = MutableLiveData<ArrayList<String>>()
private val inputAudioDeviceValues = MutableLiveData<ArrayList<AudioDevice>>()
val outputAudioDeviceListener = object : SettingListenerStub() { val outputAudioDeviceListener = object : SettingListenerStub() {
override fun onListValueChanged(position: Int) { override fun onListValueChanged(position: Int) {
val values = outputAudioDeviceValues.value.orEmpty() val values = outputAudioDeviceValues.value.orEmpty()
@ -135,6 +147,7 @@ class AudioSettingsViewModel : GenericSettingsViewModel() {
prefs.getString(R.string.audio_settings_echo_canceller_calibration_summary) prefs.getString(R.string.audio_settings_echo_canceller_calibration_summary)
} }
echoTesterStatus.value = prefs.getString(R.string.audio_settings_echo_tester_summary) echoTesterStatus.value = prefs.getString(R.string.audio_settings_echo_tester_summary)
initInputAudioDevicesList()
initOutputAudioDevicesList() initOutputAudioDevicesList()
initCodecBitrateList() initCodecBitrateList()
microphoneGain.value = core.micGainDb microphoneGain.value = core.micGainDb
@ -181,10 +194,26 @@ class AudioSettingsViewModel : GenericSettingsViewModel() {
core.stopEchoTester() core.stopEchoTester()
} }
private fun initInputAudioDevicesList() {
val labels = arrayListOf<String>()
val values = arrayListOf<AudioDevice>()
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() { private fun initOutputAudioDevicesList() {
val labels = arrayListOf<String>() val labels = arrayListOf<String>()
val values = arrayListOf<AudioDevice>() val values = arrayListOf<AudioDevice>()
for (audioDevice in core.audioDevices) { for (audioDevice in core.extendedAudioDevices) {
if (audioDevice.hasCapability(AudioDevice.Capabilities.CapabilityPlay)) { if (audioDevice.hasCapability(AudioDevice.Capabilities.CapabilityPlay)) {
labels.add(audioDevice.id) labels.add(audioDevice.id)
values.add(audioDevice) values.add(audioDevice)

View file

@ -91,6 +91,14 @@
linphone:listener="@{viewModel.adaptiveRateControlListener}" linphone:listener="@{viewModel.adaptiveRateControlListener}"
linphone:checked="@={viewModel.adaptiveRateControl}"/> linphone:checked="@={viewModel.adaptiveRateControl}"/>
<include
layout="@layout/settings_widget_list"
linphone:title="@{@string/audio_settings_input_device_title}"
linphone:subtitle="@{@string/audio_settings_input_device_summary}"
linphone:listener="@{viewModel.inputAudioDeviceListener}"
linphone:selectedIndex="@{viewModel.inputAudioDeviceIndex}"
linphone:labels="@{viewModel.inputAudioDeviceLabels}"/>
<include <include
layout="@layout/settings_widget_list" layout="@layout/settings_widget_list"
linphone:title="@{@string/audio_settings_output_device_title}" linphone:title="@{@string/audio_settings_output_device_title}"

View file

@ -297,6 +297,8 @@
<string name="audio_settings_echo_tester_summary_is_running">Echo tester is running</string> <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_title">Adaptive rate control</string>
<string name="audio_settings_adaptive_rate_control_summary"></string> <string name="audio_settings_adaptive_rate_control_summary"></string>
<string name="audio_settings_input_device_title">Default input audio device</string>
<string name="audio_settings_input_device_summary">Changes will take effect starting next call</string>
<string name="audio_settings_output_device_title">Default output audio device</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_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_title">Codec bitrate limit</string>