Fixed possible ANR when using auto answer

This commit is contained in:
Sylvain Berfini 2020-05-20 15:10:21 +02:00
parent de7a2877c8
commit 9d41dc4026

View file

@ -90,7 +90,7 @@ public class LinphoneManager implements SensorEventListener {
private final SensorManager mSensorManager; private final SensorManager mSensorManager;
private final Sensor mProximity; private final Sensor mProximity;
private final MediaScanner mMediaScanner; private final MediaScanner mMediaScanner;
private Timer mTimer, mAutoAnswerTimer; private Timer mTimer;
private final LinphonePreferences mPrefs; private final LinphonePreferences mPrefs;
private Core mCore; private Core mCore;
@ -182,8 +182,8 @@ public class LinphoneManager implements SensorEventListener {
} else if (state == State.IncomingReceived } else if (state == State.IncomingReceived
&& (LinphonePreferences.instance().isAutoAnswerEnabled()) && (LinphonePreferences.instance().isAutoAnswerEnabled())
&& !getCallGsmON()) { && !getCallGsmON()) {
TimerTask lTask = LinphoneUtils.dispatchOnUIThreadAfter(
new TimerTask() { new Runnable() {
@Override @Override
public void run() { public void run() {
if (mCore != null) { if (mCore != null) {
@ -193,9 +193,8 @@ public class LinphoneManager implements SensorEventListener {
} }
} }
} }
}; },
mAutoAnswerTimer = new Timer("Auto answer"); mPrefs.getAutoAnswerTime());
mAutoAnswerTimer.schedule(lTask, mPrefs.getAutoAnswerTime());
} else if (state == State.End || state == State.Error) { } else if (state == State.End || state == State.Error) {
if (mCore.getCallsNb() == 0) { if (mCore.getCallsNb() == 0) {
// Disabling proximity sensor // Disabling proximity sensor
@ -391,7 +390,6 @@ public class LinphoneManager implements SensorEventListener {
if (mAudioManager != null) mAudioManager.destroy(); if (mAudioManager != null) mAudioManager.destroy();
if (mTimer != null) mTimer.cancel(); if (mTimer != null) mTimer.cancel();
if (mAutoAnswerTimer != null) mAutoAnswerTimer.cancel();
if (mCore != null) { if (mCore != null) {
destroyCore(); destroyCore();