Fixed echo cancellation issue
This commit is contained in:
parent
75495815ef
commit
17e8947c94
3 changed files with 16 additions and 4 deletions
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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() {
|
||||
|
@ -840,12 +846,15 @@ public class SettingsFragment extends PreferencesListFragment implements EcCalib
|
|||
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);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
Loading…
Reference in a new issue