Changing how we decline call when call GSM is active

This commit is contained in:
Erwan Croze 2017-09-21 10:26:36 +02:00
parent a6aacef3a3
commit 962654bf7d
2 changed files with 7 additions and 12 deletions

View file

@ -87,6 +87,7 @@ import org.linphone.core.PresenceBasicStatus;
import org.linphone.core.PresenceActivityType; import org.linphone.core.PresenceActivityType;
import org.linphone.core.PresenceModel; import org.linphone.core.PresenceModel;
import org.linphone.core.PublishState; import org.linphone.core.PublishState;
import org.linphone.core.Reason;
import org.linphone.core.SubscriptionState; import org.linphone.core.SubscriptionState;
import org.linphone.core.TunnelConfig; import org.linphone.core.TunnelConfig;
import org.linphone.mediastream.Log; import org.linphone.mediastream.Log;
@ -1352,8 +1353,11 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag
} }
} }
if (state == State.IncomingReceived && getCallGsmON()) {
if (state == State.IncomingReceived && (LinphonePreferences.instance().isAutoAnswerEnabled()) && !getCallGsmON()) { if (mLc != null) {
mLc.declineCall(call, Reason.Busy);
}
} else if (state == State.IncomingReceived && (LinphonePreferences.instance().isAutoAnswerEnabled()) && !getCallGsmON()) {
TimerTask lTask = new TimerTask() { TimerTask lTask = new TimerTask() {
@Override @Override
public void run() { public void run() {
@ -1372,8 +1376,7 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag
}; };
mTimer = new Timer("Auto answer"); mTimer = new Timer("Auto answer");
mTimer.schedule(lTask, mPrefs.getAutoAnswerTime()); mTimer.schedule(lTask, mPrefs.getAutoAnswerTime());
} } else if (state == State.IncomingReceived || (state == State.CallIncomingEarlyMedia && mR.getBoolean(R.bool.allow_ringing_while_early_media))) {
else if (state == State.IncomingReceived || (state == State.CallIncomingEarlyMedia && mR.getBoolean(R.bool.allow_ringing_while_early_media))) {
// Brighten screen for at least 10 seconds // Brighten screen for at least 10 seconds
if (mLc.getCallsNb() == 1) { if (mLc.getCallsNb() == 1) {
requestAudioFocus(STREAM_RING); requestAudioFocus(STREAM_RING);

View file

@ -30,8 +30,6 @@ import android.telephony.TelephonyManager;
* *
*/ */
public class PhoneStateChangedReceiver extends BroadcastReceiver { public class PhoneStateChangedReceiver extends BroadcastReceiver {
private static int oldTimeOut;
@Override @Override
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
final String extraState = intent.getStringExtra(TelephonyManager.EXTRA_STATE); final String extraState = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
@ -40,15 +38,9 @@ public class PhoneStateChangedReceiver extends BroadcastReceiver {
return; return;
if (TelephonyManager.EXTRA_STATE_OFFHOOK.equals(extraState)) { if (TelephonyManager.EXTRA_STATE_OFFHOOK.equals(extraState)) {
if (LinphonePreferences.instance() != null) {
oldTimeOut = LinphoneManager.getLc().getIncomingTimeout();
LinphoneManager.getLc().setIncomingTimeout(0);
}
LinphoneManager.getInstance().setCallGsmON(true); LinphoneManager.getInstance().setCallGsmON(true);
LinphoneManager.getLc().pauseAllCalls(); LinphoneManager.getLc().pauseAllCalls();
} else if (TelephonyManager.EXTRA_STATE_IDLE.equals(extraState)) { } else if (TelephonyManager.EXTRA_STATE_IDLE.equals(extraState)) {
if (LinphonePreferences.instance() != null)
LinphoneManager.getLc().setIncomingTimeout(oldTimeOut);
LinphoneManager.getInstance().setCallGsmON(false); LinphoneManager.getInstance().setCallGsmON(false);
} }
} }