Merge "SipService: ignore connect event for non-active networks." into gingerbread

This commit is contained in:
Hung-ying Tyan
2010-09-14 09:57:47 -07:00
committed by Android (Google) Code Review
2 changed files with 35 additions and 11 deletions

View File

@@ -771,6 +771,23 @@ public final class SipService extends ISipService.Stub {
b.get(ConnectivityManager.EXTRA_NETWORK_INFO); b.get(ConnectivityManager.EXTRA_NETWORK_INFO);
String type = netInfo.getTypeName(); String type = netInfo.getTypeName();
NetworkInfo.State state = netInfo.getState(); NetworkInfo.State state = netInfo.getState();
NetworkInfo activeNetInfo = getActiveNetworkInfo();
if (activeNetInfo != null) {
Log.v(TAG, "active network: " + activeNetInfo.getTypeName()
+ ((activeNetInfo.getState() == NetworkInfo.State.CONNECTED)
? " CONNECTED" : " DISCONNECTED"));
} else {
Log.v(TAG, "active network: null");
}
if ((state == NetworkInfo.State.CONNECTED)
&& (activeNetInfo != null)
&& (activeNetInfo.getType() != netInfo.getType())) {
Log.d(TAG, "ignore connect event: " + type
+ ", active: " + activeNetInfo.getTypeName());
return;
}
if (state == NetworkInfo.State.CONNECTED) { if (state == NetworkInfo.State.CONNECTED) {
Log.v(TAG, "Connectivity alert: CONNECTED " + type); Log.v(TAG, "Connectivity alert: CONNECTED " + type);
onChanged(type, true); onChanged(type, true);
@@ -785,6 +802,12 @@ public final class SipService extends ISipService.Stub {
} }
} }
private NetworkInfo getActiveNetworkInfo() {
ConnectivityManager cm = (ConnectivityManager)
mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
return cm.getActiveNetworkInfo();
}
private void onChanged(String type, boolean connected) { private void onChanged(String type, boolean connected) {
synchronized (SipService.this) { synchronized (SipService.this) {
// When turning on WIFI, it needs some time for network // When turning on WIFI, it needs some time for network

View File

@@ -184,7 +184,7 @@ public class SipAudioCallImpl extends SipSessionAdapter
Listener listener = mListener; Listener listener = mListener;
if (listener != null) { if (listener != null) {
try { try {
listener.onCalling(SipAudioCallImpl.this); listener.onCalling(this);
} catch (Throwable t) { } catch (Throwable t) {
Log.e(TAG, "onCalling()", t); Log.e(TAG, "onCalling()", t);
} }
@@ -198,7 +198,7 @@ public class SipAudioCallImpl extends SipSessionAdapter
Listener listener = mListener; Listener listener = mListener;
if (listener != null) { if (listener != null) {
try { try {
listener.onRingingBack(SipAudioCallImpl.this); listener.onRingingBack(this);
} catch (Throwable t) { } catch (Throwable t) {
Log.e(TAG, "onRingingBack()", t); Log.e(TAG, "onRingingBack()", t);
} }
@@ -251,9 +251,9 @@ public class SipAudioCallImpl extends SipSessionAdapter
if (listener != null) { if (listener != null) {
try { try {
if (mHold) { if (mHold) {
listener.onCallHeld(SipAudioCallImpl.this); listener.onCallHeld(this);
} else { } else {
listener.onCallEstablished(SipAudioCallImpl.this); listener.onCallEstablished(this);
} }
} catch (Throwable t) { } catch (Throwable t) {
Log.e(TAG, "onCallEstablished()", t); Log.e(TAG, "onCallEstablished()", t);
@@ -268,7 +268,7 @@ public class SipAudioCallImpl extends SipSessionAdapter
Listener listener = mListener; Listener listener = mListener;
if (listener != null) { if (listener != null) {
try { try {
listener.onCallEnded(SipAudioCallImpl.this); listener.onCallEnded(this);
} catch (Throwable t) { } catch (Throwable t) {
Log.e(TAG, "onCallEnded()", t); Log.e(TAG, "onCallEnded()", t);
} }
@@ -282,7 +282,7 @@ public class SipAudioCallImpl extends SipSessionAdapter
Listener listener = mListener; Listener listener = mListener;
if (listener != null) { if (listener != null) {
try { try {
listener.onCallBusy(SipAudioCallImpl.this); listener.onCallBusy(this);
} catch (Throwable t) { } catch (Throwable t) {
Log.e(TAG, "onCallBusy()", t); Log.e(TAG, "onCallBusy()", t);
} }
@@ -302,7 +302,7 @@ public class SipAudioCallImpl extends SipSessionAdapter
Listener listener = mListener; Listener listener = mListener;
if (listener != null) { if (listener != null) {
try { try {
listener.onError(SipAudioCallImpl.this, mErrorCode, message); listener.onError(this, mErrorCode, message);
} catch (Throwable t) { } catch (Throwable t) {
Log.e(TAG, "onCallBusy()", t); Log.e(TAG, "onCallBusy()", t);
} }
@@ -310,9 +310,10 @@ public class SipAudioCallImpl extends SipSessionAdapter
} }
@Override @Override
public void onError(ISipSession session, String errorCode, String message) { public void onError(ISipSession session, String errorCodeString,
Log.d(TAG, "sip session error: " + errorCode + ": " + message); String message) {
mErrorCode = getErrorCode(errorCode); Log.d(TAG, "sip session error: " + errorCodeString + ": " + message);
SipErrorCode errorCode = mErrorCode = getErrorCode(errorCodeString);
mErrorMessage = message; mErrorMessage = message;
synchronized (this) { synchronized (this) {
if ((mErrorCode == SipErrorCode.DATA_CONNECTION_LOST) if ((mErrorCode == SipErrorCode.DATA_CONNECTION_LOST)
@@ -323,7 +324,7 @@ public class SipAudioCallImpl extends SipSessionAdapter
Listener listener = mListener; Listener listener = mListener;
if (listener != null) { if (listener != null) {
try { try {
listener.onError(SipAudioCallImpl.this, mErrorCode, message); listener.onError(this, errorCode, message);
} catch (Throwable t) { } catch (Throwable t) {
Log.e(TAG, "onError()", t); Log.e(TAG, "onError()", t);
} }