diff --git a/CHANGELOG.md b/CHANGELOG.md
index 01699eb42..1a825f5dd 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -35,6 +35,7 @@ Group changes to describe their impact on the project, as follows:
- Option to automatically download incoming files, either always, never or depending on their sizes. This adds the feature of having images received by file transfer in notifications.
- Call recording.
- Get remote provisioning URL from QR code scan.
+- Added app setting for microphone & playback gain.
### Fixes
- Fixed chat room user can't get into if there are more than one with the same remote but different local accounts
diff --git a/app/src/main/java/org/linphone/settings/LinphonePreferences.java b/app/src/main/java/org/linphone/settings/LinphonePreferences.java
index 8cee50942..b253f56e0 100644
--- a/app/src/main/java/org/linphone/settings/LinphonePreferences.java
+++ b/app/src/main/java/org/linphone/settings/LinphonePreferences.java
@@ -514,11 +514,17 @@ public class LinphonePreferences {
}
public boolean isFriendlistsubscriptionEnabled() {
- return getConfig().getBool("app", "friendlist_subscription_enabled", false);
+ boolean previousConfig =
+ getConfig().getBool("app", "friendlist_subscription_enabled", false);
+ if (previousConfig) {
+ enabledFriendlistSubscription(previousConfig);
+ getConfig().setBool("app", "friendlist_subscription_enabled", false);
+ }
+ return getLc().isFriendListSubscriptionEnabled();
}
public void enabledFriendlistSubscription(boolean enabled) {
- getConfig().setBool("app", "friendlist_subscription_enabled", enabled);
+ getLc().enableFriendListSubscription(enabled);
}
public void setDefaultAccount(int accountIndex) {
@@ -629,6 +635,22 @@ public class LinphonePreferences {
return getConfig().getInt("sound", "ec_delay", -1);
}
+ public float getMicGainDb() {
+ return getLc().getMicGainDb();
+ }
+
+ public void setMicGainDb(float gain) {
+ getLc().setMicGainDb(gain);
+ }
+
+ public float getPlaybackGainDb() {
+ return getLc().getPlaybackGainDb();
+ }
+
+ public void setPlaybackGainDb(float gain) {
+ getLc().setPlaybackGainDb(gain);
+ }
+
// End of audio settings
// Video settings
diff --git a/app/src/main/java/org/linphone/settings/SettingsFragment.java b/app/src/main/java/org/linphone/settings/SettingsFragment.java
index f36dc986b..2b67e6c26 100644
--- a/app/src/main/java/org/linphone/settings/SettingsFragment.java
+++ b/app/src/main/java/org/linphone/settings/SettingsFragment.java
@@ -630,6 +630,15 @@ public class SettingsFragment extends PreferencesListFragment {
(ListPreference) findPreference(getString(R.string.pref_codec_bitrate_limit_key));
bitrateLimit.setSummary(String.valueOf(mPrefs.getCodecBitrateLimit()));
bitrateLimit.setValue(String.valueOf(mPrefs.getCodecBitrateLimit()));
+
+ EditTextPreference micGain =
+ (EditTextPreference) findPreference(getString(R.string.pref_mic_gain_db_key));
+ micGain.setText(String.valueOf(mPrefs.getMicGainDb()));
+ micGain.setSummary(String.valueOf(mPrefs.getMicGainDb()));
+ EditTextPreference playbackGain =
+ (EditTextPreference) findPreference(getString(R.string.pref_playback_gain_db_key));
+ playbackGain.setText(String.valueOf(mPrefs.getPlaybackGainDb()));
+ playbackGain.setSummary(String.valueOf(mPrefs.getPlaybackGainDb()));
}
private void setAudioPreferencesListener() {
@@ -728,6 +737,28 @@ public class SettingsFragment extends PreferencesListFragment {
return true;
}
});
+
+ findPreference(getString(R.string.pref_mic_gain_db_key))
+ .setOnPreferenceChangeListener(
+ new OnPreferenceChangeListener() {
+ @Override
+ public boolean onPreferenceChange(Preference preference, Object o) {
+ float newVal = Float.valueOf((String) o);
+ mPrefs.setMicGainDb(newVal);
+ return true;
+ }
+ });
+
+ findPreference(getString(R.string.pref_playback_gain_db_key))
+ .setOnPreferenceChangeListener(
+ new OnPreferenceChangeListener() {
+ @Override
+ public boolean onPreferenceChange(Preference preference, Object o) {
+ float newVal = Float.valueOf((String) o);
+ mPrefs.setPlaybackGainDb(newVal);
+ return true;
+ }
+ });
}
public void startEchoTester() {
diff --git a/app/src/main/res/values/non_localizable_strings.xml b/app/src/main/res/values/non_localizable_strings.xml
index facca01d8..bb767ba6a 100644
--- a/app/src/main/res/values/non_localizable_strings.xml
+++ b/app/src/main/res/values/non_localizable_strings.xml
@@ -31,6 +31,8 @@
pref_audio_soft_volume_key
pref_audio_ringtone
pref_incoming_call_vibration_key
+ pref_mic_gain_db_key
+ pref_playback_gain_db_key
pref_ipv6_key
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 65e2c6cea..534faaefd 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -398,6 +398,8 @@
failed
Adaptive rate control
Codec bitrate limit
+ Microphone gain (in db)
+ Playback gain (in db)
Codecs
diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml
index 0f964b6e8..e8cfb0d53 100644
--- a/app/src/main/res/xml/preferences.xml
+++ b/app/src/main/res/xml/preferences.xml
@@ -79,6 +79,18 @@
android:persistent="false"
android:title="@string/pref_codec_bitrate_limit" />
+
+
+
+