Reject sip call when we are already in gsm call

This commit is contained in:
Erwan Croze 2017-07-18 15:21:22 +02:00
parent 7a2d276162
commit cb1ccaafec
3 changed files with 29 additions and 9 deletions

View file

@ -147,6 +147,7 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag
private boolean mAudioFocused; private boolean mAudioFocused;
private boolean echoTesterIsRunning; private boolean echoTesterIsRunning;
private boolean dozeModeEnabled; private boolean dozeModeEnabled;
private boolean callGsmON;
private int mLastNetworkType=-1; private int mLastNetworkType=-1;
private ConnectivityManager mConnectivityManager; private ConnectivityManager mConnectivityManager;
private BroadcastReceiver mKeepAliveReceiver; private BroadcastReceiver mKeepAliveReceiver;
@ -874,6 +875,7 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag
accountCreator = LinphoneCoreFactory.instance().createAccountCreator(LinphoneManager.getLc(), LinphonePreferences.instance().getXmlrpcUrl()); accountCreator = LinphoneCoreFactory.instance().createAccountCreator(LinphoneManager.getLc(), LinphonePreferences.instance().getXmlrpcUrl());
accountCreator.setListener(this); accountCreator.setListener(this);
callGsmON = false;
} }
protected void setHandsetMode(Boolean on){ protected void setHandsetMode(Boolean on){
@ -1349,7 +1351,8 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag
} }
} }
if (state == State.IncomingReceived && (LinphonePreferences.instance().isAutoAnswerEnabled())) {
if (state == State.IncomingReceived && (LinphonePreferences.instance().isAutoAnswerEnabled()) && !getCallGsmON()) {
TimerTask lTask = new TimerTask() { TimerTask lTask = new TimerTask() {
@Override @Override
public void run() { public void run() {
@ -1804,6 +1807,14 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag
return mDynamicConfigFile; return mDynamicConfigFile;
} }
public boolean getCallGsmON() {
return callGsmON;
}
public void setCallGsmON(boolean on) {
callGsmON = on;
}
@SuppressWarnings("serial") @SuppressWarnings("serial")
public static class LinphoneConfigException extends LinphoneException { public static class LinphoneConfigException extends LinphoneException {

View file

@ -30,17 +30,26 @@ 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);
if (!LinphoneManager.isInstanciated())
return;
if (TelephonyManager.EXTRA_STATE_OFFHOOK.equals(extraState)) { if (TelephonyManager.EXTRA_STATE_OFFHOOK.equals(extraState)) {
LinphoneManager.setGsmIdle(false); if (LinphonePreferences.instance() != null) {
if (!LinphoneManager.isInstanciated()) oldTimeOut = LinphoneManager.getLc().getIncomingTimeout();
return; LinphoneManager.getLc().setIncomingTimeout(0);
}
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)) {
LinphoneManager.setGsmIdle(true); if (LinphonePreferences.instance() != null)
LinphoneManager.getLc().setIncomingTimeout(oldTimeOut);
LinphoneManager.getInstance().setCallGsmON(false);
} }
} }
} }

View file

@ -79,9 +79,9 @@ public class SettingsFragment extends PreferencesListFragment {
public SettingsFragment() { public SettingsFragment() {
super(R.xml.preferences); super(R.xml.preferences);
} }
public void closePreferenceScreen() { public void closePreferenceScreen() {
if (currentPreferenceScreen != null) { if (currentPreferenceScreen != null && currentPreferenceScreen.getDialog() != null) {
currentPreferenceScreen.getDialog().dismiss(); currentPreferenceScreen.getDialog().dismiss();
currentPreferenceScreen = null; currentPreferenceScreen = null;
} }
@ -167,8 +167,8 @@ public class SettingsFragment extends PreferencesListFragment {
findPreference(getString(R.string.pref_chat_key)).setOnPreferenceClickListener(prefClickListener); findPreference(getString(R.string.pref_chat_key)).setOnPreferenceClickListener(prefClickListener);
findPreference(getString(R.string.pref_network_key)).setOnPreferenceClickListener(prefClickListener); findPreference(getString(R.string.pref_network_key)).setOnPreferenceClickListener(prefClickListener);
findPreference(getString(R.string.pref_advanced_key)).setOnPreferenceClickListener(prefClickListener); findPreference(getString(R.string.pref_advanced_key)).setOnPreferenceClickListener(prefClickListener);
setTunnelPreferencesListener(); setTunnelPreferencesListener();
setAudioPreferencesListener(); setAudioPreferencesListener();
setVideoPreferencesListener(); setVideoPreferencesListener();