diff options
author | Guo-Bin Zhang <Guo-binZhang@motorola.com> | 2009-08-19 18:35:01 -0500 |
---|---|---|
committer | Wink Saville <wink@google.com> | 2009-08-21 17:02:49 -0700 |
commit | 1cef22890d10417977397a5dccf34956858d0803 (patch) | |
tree | 27926e975821d90bf35ed4b72ba67590919953b9 /telephony | |
parent | 6f89172b6e149c623fe582e4baa658299a3fc72c (diff) | |
download | frameworks_base-1cef22890d10417977397a5dccf34956858d0803.zip frameworks_base-1cef22890d10417977397a5dccf34956858d0803.tar.gz frameworks_base-1cef22890d10417977397a5dccf34956858d0803.tar.bz2 |
Disable data call in emergency call
Same change as 79ef673d56e2599932b8b7f13695d23b4df54d09 rebased
Diffstat (limited to 'telephony')
-rwxr-xr-x | telephony/java/com/android/internal/telephony/cdma/CDMAPhone.java | 3 | ||||
-rw-r--r-- | telephony/java/com/android/internal/telephony/cdma/CdmaCallTracker.java | 29 |
2 files changed, 32 insertions, 0 deletions
diff --git a/telephony/java/com/android/internal/telephony/cdma/CDMAPhone.java b/telephony/java/com/android/internal/telephony/cdma/CDMAPhone.java index 237d533..66eb789 100755 --- a/telephony/java/com/android/internal/telephony/cdma/CDMAPhone.java +++ b/telephony/java/com/android/internal/telephony/cdma/CDMAPhone.java @@ -749,6 +749,9 @@ public class CDMAPhone extends PhoneBase { Intent intent = new Intent(TelephonyIntents.ACTION_SHOW_NOTICE_ECM_BLOCK_OTHERS); ActivityManagerNative.broadcastStickyIntent(intent, null); return false; + } else if ((mCT.state == Phone.State.OFFHOOK) && mCT.isInEmergencyCall()) { + // Do not allow data call to be enabled when emergency call is going on + return false; } else { return mDataConnection.setDataEnabled(true); } diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaCallTracker.java b/telephony/java/com/android/internal/telephony/cdma/CdmaCallTracker.java index 3b2c90c..806c31d 100644 --- a/telephony/java/com/android/internal/telephony/cdma/CdmaCallTracker.java +++ b/telephony/java/com/android/internal/telephony/cdma/CdmaCallTracker.java @@ -73,6 +73,7 @@ public final class CdmaCallTracker extends CallTracker { CdmaConnection pendingMO; boolean hangupPendingMO; boolean pendingCallInEcm=false; + boolean mIsInEmergencyCall = false; CDMAPhone phone; boolean desiredMute = false; // false = mute off @@ -219,6 +220,9 @@ public final class CdmaCallTracker extends CallTracker { // Always unmute when initiating a new call setMute(false); + // Check data call + disableDataCallInEmergencyCall(dialString); + // In Ecm mode, if another emergency call is dialed, Ecm mode will not exit. if(!isPhoneInEcmMode || (isPhoneInEcmMode && isEmergencyCall)) { cm.dial(pendingMO.address, clirMode, obtainCompleteMessage()); @@ -245,6 +249,9 @@ public final class CdmaCallTracker extends CallTracker { private Connection dialThreeWay (String dialString) { if (!foregroundCall.isIdle()) { + // Check data call + disableDataCallInEmergencyCall(dialString); + // Attach the new connection to foregroundCall pendingMO = new CdmaConnection(phone.getContext(), dialString, this, foregroundCall); @@ -556,6 +563,8 @@ public final class CdmaCallTracker extends CallTracker { // Re-start Ecm timer when the connected emergency call ends if (mIsEcmTimerCanceled) { handleEcmTimer(phone.RESTART_ECM_TIMER); + } else { + mIsInEmergencyCall = false; } // Dropped connections are removed from the CallTracker @@ -1010,6 +1019,26 @@ public final class CdmaCallTracker extends CallTracker { } } + /** + * Disable data call when emergency call is connected + */ + private void disableDataCallInEmergencyCall(String dialString) { + if (PhoneNumberUtils.isEmergencyNumber(dialString)) { + phone.disableDataConnectivity(); + mIsInEmergencyCall = true; + } + } + + /** + * Check if current call is in emergency call + * + * @return true if it is in emergency call + * false if it is not in emergency call + */ + boolean isInEmergencyCall() { + return mIsInEmergencyCall; + } + protected void log(String msg) { Log.d(LOG_TAG, "[CdmaCallTracker] " + msg); } |