diff options
Diffstat (limited to 'services/QualifiedNetworksService/src/com/android')
2 files changed, 15 insertions, 9 deletions
diff --git a/services/QualifiedNetworksService/src/com/android/telephony/qns/AccessNetworkEvaluator.java b/services/QualifiedNetworksService/src/com/android/telephony/qns/AccessNetworkEvaluator.java index 6ef124d..d708f2d 100644 --- a/services/QualifiedNetworksService/src/com/android/telephony/qns/AccessNetworkEvaluator.java +++ b/services/QualifiedNetworksService/src/com/android/telephony/qns/AccessNetworkEvaluator.java @@ -706,12 +706,13 @@ class AccessNetworkEvaluator { boolean needEvaluate = false; switch (info.getEvent()) { case DataConnectionStatusTracker.EVENT_DATA_CONNECTION_DISCONNECTED: - needEvaluate = true; - initLastNotifiedQualifiedNetwork(); if (mNetCapability == NetworkCapabilities.NET_CAPABILITY_EIMS) { // If FWK guided emergency's transport type during data connected state, notify // the transport type when the data connection is disconnected. notifyCachedTransportTypeForEmergency(); + } else { + needEvaluate = true; + initLastNotifiedQualifiedNetwork(); } break; case DataConnectionStatusTracker.EVENT_DATA_CONNECTION_CONNECTED: @@ -722,8 +723,9 @@ class AccessNetworkEvaluator { // If FWK guided emergency's transport type during data connecting state, notify // the transport type when the data connection is failed. notifyCachedTransportTypeForEmergency(); + } else { + needEvaluate = true; } - needEvaluate = true; break; } if (needEvaluate) { diff --git a/services/QualifiedNetworksService/src/com/android/telephony/qns/QnsCallStatusTracker.java b/services/QualifiedNetworksService/src/com/android/telephony/qns/QnsCallStatusTracker.java index d4d3d16..7a2867c 100644 --- a/services/QualifiedNetworksService/src/com/android/telephony/qns/QnsCallStatusTracker.java +++ b/services/QualifiedNetworksService/src/com/android/telephony/qns/QnsCallStatusTracker.java @@ -390,8 +390,11 @@ public class QnsCallStatusTracker { void close() { mTelephonyListener.removeMediaQualityStatusCallback(mMediaQualityStatusConsumer); - mTelephonyListener.unregisterPreciseDataConnectionStateChanged( - mNetCapability, mActiveCallHandler); + if (mNetCapability != QnsConstants.INVALID_VALUE) { + mTelephonyListener.unregisterPreciseDataConnectionStateChanged( + mNetCapability, mActiveCallHandler); + mNetCapability = QnsConstants.INVALID_VALUE; + } if (mHandlerThread != null) { mHandlerThread.quitSafely(); } @@ -523,11 +526,11 @@ public class QnsCallStatusTracker { Log.d(mLogTag, "callEnded callType: " + mCallType + " netCapa:" + QnsUtils.getNameOfNetCapability(mNetCapability) + " " + sb.toString()); mCallType = QnsConstants.CALL_TYPE_IDLE; - mNetCapability = 0; - mAccessNetwork = AccessNetworkConstants.AccessNetworkType.UNKNOWN; - mTransportType = AccessNetworkConstants.TRANSPORT_TYPE_INVALID; mTelephonyListener.unregisterPreciseDataConnectionStateChanged( mNetCapability, mActiveCallHandler); + mNetCapability = QnsConstants.INVALID_VALUE; + mAccessNetwork = AccessNetworkConstants.AccessNetworkType.UNKNOWN; + mTransportType = AccessNetworkConstants.TRANSPORT_TYPE_INVALID; } void onMediaQualityStatusChanged(MediaQualityStatus status) { @@ -846,7 +849,8 @@ public class QnsCallStatusTracker { boolean hasEmergencyCall() { for (CallState cs : mCallStates) { - if (cs.getImsCallServiceType() == ImsCallProfile.SERVICE_TYPE_EMERGENCY) { + if (cs.getImsCallServiceType() == ImsCallProfile.SERVICE_TYPE_EMERGENCY + && cs.getCallState() == PreciseCallState.PRECISE_CALL_STATE_ACTIVE) { return true; } } |