diff --git a/src/org/linphone/LinphoneManager.java b/src/org/linphone/LinphoneManager.java index 5e028bf19..893a7ac56 100644 --- a/src/org/linphone/LinphoneManager.java +++ b/src/org/linphone/LinphoneManager.java @@ -945,17 +945,16 @@ public class LinphoneManager implements LinphoneCoreListener { public void ecCalibrationStatus(final LinphoneCore lc,final EcCalibratorStatus status, final int delayMs, final Object data) { + routeAudioToReceiver(); EcCalibrationListener listener = (EcCalibrationListener) data; listener.onEcCalibrationStatus(status, delayMs); } - - public void startEcCalibration(EcCalibrationListener l) throws LinphoneCoreException { + routeAudioToSpeaker(); int oldVolume = mAudioManager.getStreamVolume(STREAM_VOICE_CALL); int maxVolume = mAudioManager.getStreamMaxVolume(STREAM_VOICE_CALL); mAudioManager.setStreamVolume(STREAM_VOICE_CALL, maxVolume, 0); - mLc.startEchoCalibration(l); mAudioManager.setStreamVolume(STREAM_VOICE_CALL, oldVolume, 0); diff --git a/src/org/linphone/LinphonePreferences.java b/src/org/linphone/LinphonePreferences.java index 4b6f0112f..7af3e910b 100644 --- a/src/org/linphone/LinphonePreferences.java +++ b/src/org/linphone/LinphonePreferences.java @@ -653,6 +653,10 @@ public class LinphonePreferences { public boolean isEchoCancellationEnabled() { return getLc().isEchoCancellationEnabled(); } + + public int getEchoCalibration() { + return getConfig().getInt("sound", "ec_delay", -1); + } // End of audio settings // Video settings diff --git a/src/org/linphone/SettingsFragment.java b/src/org/linphone/SettingsFragment.java index 564a507fd..f6a42ace2 100644 --- a/src/org/linphone/SettingsFragment.java +++ b/src/org/linphone/SettingsFragment.java @@ -433,6 +433,12 @@ public class SettingsFragment extends PreferencesListFragment implements EcCalib CheckBoxPreference echoCancellation = (CheckBoxPreference) findPreference(getString(R.string.pref_echo_cancellation_key)); echoCancellation.setChecked(mPrefs.isEchoCancellationEnabled()); + + if (mPrefs.isEchoCancellationEnabled()) { + Preference echoCalibration = findPreference(getString(R.string.pref_echo_canceller_calibration_key)); + echoCalibration.setSummary(String.format(getString(R.string.ec_calibrated), mPrefs.getEchoCalibration())); + } + } private void setAudioPreferencesListener() { @@ -836,16 +842,19 @@ public class SettingsFragment extends PreferencesListFragment implements EcCalib public void run() { CheckBoxPreference echoCancellation = (CheckBoxPreference) findPreference(getString(R.string.pref_echo_cancellation_key)); Preference echoCancellerCalibration = findPreference(getString(R.string.pref_echo_canceller_calibration_key)); - + if (status == EcCalibratorStatus.DoneNoEcho) { echoCancellerCalibration.setSummary(R.string.no_echo); echoCancellation.setChecked(false); + LinphonePreferences.instance().setEchoCancellation(false); } else if (status == EcCalibratorStatus.Done) { echoCancellerCalibration.setSummary(String.format(getString(R.string.ec_calibrated), delayMs)); echoCancellation.setChecked(true); + LinphonePreferences.instance().setEchoCancellation(true); } else if (status == EcCalibratorStatus.Failed) { echoCancellerCalibration.setSummary(R.string.failed); echoCancellation.setChecked(true); + LinphonePreferences.instance().setEchoCancellation(true); } } });