Reject sip call when we are already in gsm call
This commit is contained in:
parent
7a2d276162
commit
cb1ccaafec
3 changed files with 29 additions and 9 deletions
|
@ -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 {
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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();
|
||||||
|
|
Loading…
Reference in a new issue