diff --git a/src/android/org/linphone/LinphoneManager.java b/src/android/org/linphone/LinphoneManager.java index b155d1b33..beb784a0f 100644 --- a/src/android/org/linphone/LinphoneManager.java +++ b/src/android/org/linphone/LinphoneManager.java @@ -1542,7 +1542,7 @@ public class LinphoneManager implements CoreListener, ChatMessageListener, Senso boolean encrypted, String authenticationToken) { } - public void startEcCalibration(CoreListener l) throws CoreException { + public void startEcCalibration() throws CoreException { routeAudioToSpeaker(); setAudioManagerInCallMode(); Log.i("Set audio mode on 'Voice Communication'"); diff --git a/src/android/org/linphone/SettingsFragment.java b/src/android/org/linphone/SettingsFragment.java index 368dc1c59..8f6f91b53 100644 --- a/src/android/org/linphone/SettingsFragment.java +++ b/src/android/org/linphone/SettingsFragment.java @@ -50,6 +50,7 @@ import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.media.AudioManager; import android.net.Uri; +import android.net.wifi.WifiManager; import android.os.Build; import android.os.Bundle; import android.os.Handler; @@ -97,6 +98,7 @@ public class SettingsFragment extends PreferencesListFragment { mListener = new CoreListenerStub() { @Override public void onEcCalibrationResult(Core lc, Core.EcCalibratorStatus status, int delayMs) { + lc.removeListener(mListener); LinphoneManager.getInstance().routeAudioToReceiver(); CheckBoxPreference echoCancellation = (CheckBoxPreference) findPreference(getString(R.string.pref_echo_cancellation_key)); @@ -540,6 +542,7 @@ public class SettingsFragment extends PreferencesListFragment { public boolean onPreferenceChange(Preference preference, Object newValue) { boolean enable = (Boolean) newValue; pt.enable(enable); + ((CheckBoxPreference)preference).setChecked(enable); return true; } }); @@ -662,7 +665,8 @@ public class SettingsFragment extends PreferencesListFragment { try { if (LinphoneManager.getInstance().getEchoTesterStatus()) stopEchoTester(); - LinphoneManager.getInstance().startEcCalibration(mListener); + LinphoneManager.getLc().addListener(mListener); + LinphoneManager.getInstance().startEcCalibration(); } catch (CoreException e) { Log.e(e); } @@ -747,6 +751,7 @@ public class SettingsFragment extends PreferencesListFragment { } } pt.enable(enable); + ((CheckBoxPreference)preference).setChecked(enable); return true; } }); diff --git a/src/android/org/linphone/assistant/EchoCancellerCalibrationFragment.java b/src/android/org/linphone/assistant/EchoCancellerCalibrationFragment.java index 8f9e49b6f..aa85c34d2 100644 --- a/src/android/org/linphone/assistant/EchoCancellerCalibrationFragment.java +++ b/src/android/org/linphone/assistant/EchoCancellerCalibrationFragment.java @@ -57,6 +57,7 @@ public class EchoCancellerCalibrationFragment extends Fragment implements XmlRpc mListener = new CoreListenerStub(){ @Override public void onEcCalibrationResult(Core lc, Core.EcCalibratorStatus status, int delay_ms) { + lc.removeListener(mListener); LinphoneManager.getInstance().routeAudioToReceiver(); if (mSendEcCalibrationResult) { sendEcCalibrationResult(status, delay_ms); @@ -76,7 +77,8 @@ public class EchoCancellerCalibrationFragment extends Fragment implements XmlRpc xmlRpcRequest.setListener(this); try { - LinphoneManager.getInstance().startEcCalibration(mListener); + LinphoneManager.getLc().addListener(mListener); + LinphoneManager.getInstance().startEcCalibration(); } catch (CoreException e) { Log.e(e, "Unable to calibrate EC"); AssistantActivity.instance().isEchoCalibrationFinished();