Fixed echo canceller calibration

This commit is contained in:
Sylvain Berfini 2017-10-18 14:28:50 +02:00
parent bc64f13563
commit ff69d00612
3 changed files with 10 additions and 3 deletions

View file

@ -1542,7 +1542,7 @@ public class LinphoneManager implements CoreListener, ChatMessageListener, Senso
boolean encrypted, String authenticationToken) { boolean encrypted, String authenticationToken) {
} }
public void startEcCalibration(CoreListener l) throws CoreException { public void startEcCalibration() throws CoreException {
routeAudioToSpeaker(); routeAudioToSpeaker();
setAudioManagerInCallMode(); setAudioManagerInCallMode();
Log.i("Set audio mode on 'Voice Communication'"); Log.i("Set audio mode on 'Voice Communication'");

View file

@ -50,6 +50,7 @@ import android.content.SharedPreferences;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.media.AudioManager; import android.media.AudioManager;
import android.net.Uri; import android.net.Uri;
import android.net.wifi.WifiManager;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
@ -97,6 +98,7 @@ public class SettingsFragment extends PreferencesListFragment {
mListener = new CoreListenerStub() { mListener = new CoreListenerStub() {
@Override @Override
public void onEcCalibrationResult(Core lc, Core.EcCalibratorStatus status, int delayMs) { public void onEcCalibrationResult(Core lc, Core.EcCalibratorStatus status, int delayMs) {
lc.removeListener(mListener);
LinphoneManager.getInstance().routeAudioToReceiver(); LinphoneManager.getInstance().routeAudioToReceiver();
CheckBoxPreference echoCancellation = (CheckBoxPreference) findPreference(getString(R.string.pref_echo_cancellation_key)); 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) { public boolean onPreferenceChange(Preference preference, Object newValue) {
boolean enable = (Boolean) newValue; boolean enable = (Boolean) newValue;
pt.enable(enable); pt.enable(enable);
((CheckBoxPreference)preference).setChecked(enable);
return true; return true;
} }
}); });
@ -662,7 +665,8 @@ public class SettingsFragment extends PreferencesListFragment {
try { try {
if (LinphoneManager.getInstance().getEchoTesterStatus()) if (LinphoneManager.getInstance().getEchoTesterStatus())
stopEchoTester(); stopEchoTester();
LinphoneManager.getInstance().startEcCalibration(mListener); LinphoneManager.getLc().addListener(mListener);
LinphoneManager.getInstance().startEcCalibration();
} catch (CoreException e) { } catch (CoreException e) {
Log.e(e); Log.e(e);
} }
@ -747,6 +751,7 @@ public class SettingsFragment extends PreferencesListFragment {
} }
} }
pt.enable(enable); pt.enable(enable);
((CheckBoxPreference)preference).setChecked(enable);
return true; return true;
} }
}); });

View file

@ -57,6 +57,7 @@ public class EchoCancellerCalibrationFragment extends Fragment implements XmlRpc
mListener = new CoreListenerStub(){ mListener = new CoreListenerStub(){
@Override @Override
public void onEcCalibrationResult(Core lc, Core.EcCalibratorStatus status, int delay_ms) { public void onEcCalibrationResult(Core lc, Core.EcCalibratorStatus status, int delay_ms) {
lc.removeListener(mListener);
LinphoneManager.getInstance().routeAudioToReceiver(); LinphoneManager.getInstance().routeAudioToReceiver();
if (mSendEcCalibrationResult) { if (mSendEcCalibrationResult) {
sendEcCalibrationResult(status, delay_ms); sendEcCalibrationResult(status, delay_ms);
@ -76,7 +77,8 @@ public class EchoCancellerCalibrationFragment extends Fragment implements XmlRpc
xmlRpcRequest.setListener(this); xmlRpcRequest.setListener(this);
try { try {
LinphoneManager.getInstance().startEcCalibration(mListener); LinphoneManager.getLc().addListener(mListener);
LinphoneManager.getInstance().startEcCalibration();
} catch (CoreException e) { } catch (CoreException e) {
Log.e(e, "Unable to calibrate EC"); Log.e(e, "Unable to calibrate EC");
AssistantActivity.instance().isEchoCalibrationFinished(); AssistantActivity.instance().isEchoCalibrationFinished();