diff options
author | Santos Cordon <santoscordon@google.com> | 2013-10-08 14:41:16 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2013-10-08 14:41:16 -0700 |
commit | 6a1b8eb9d3f8048d85c2759af2dd54bcf3abbb2e (patch) | |
tree | b95b65444879dc009914d8e0e54595503db4e8fa | |
parent | 910d5b1404fa7168891010cf32d3a7c06c092863 (diff) | |
parent | 9b41bde1ddc37162b582f839aca0a6e82e0926c2 (diff) |
am aa48f9e0: Merge "Turn screen on for call-waiting calls" into klp-dev
* commit 'aa48f9e04c983eef57b90bd4c76af59cca37b569':
Turn screen on for call-waiting calls
-rw-r--r-- | InCallUI/src/com/android/incallui/InCallPresenter.java | 23 | ||||
-rw-r--r-- | InCallUI/src/com/android/incallui/ProximitySensor.java | 9 |
2 files changed, 31 insertions, 1 deletions
diff --git a/InCallUI/src/com/android/incallui/InCallPresenter.java b/InCallUI/src/com/android/incallui/InCallPresenter.java index 4b3893994..1b9f60cc2 100644 --- a/InCallUI/src/com/android/incallui/InCallPresenter.java +++ b/InCallUI/src/com/android/incallui/InCallPresenter.java @@ -568,7 +568,7 @@ public class InCallPresenter implements CallList.Listener { if (isActivityStarted()) { mInCallActivity.dismissPendingDialogs(); } - mStatusBarNotifier.updateNotificationAndLaunchIncomingCallUi(newState, mCallList); + startUi(newState); } else if (newState == InCallState.NO_CALLS) { // The new state is the no calls state. Tear everything down. attemptFinishActivity(); @@ -577,6 +577,27 @@ public class InCallPresenter implements CallList.Listener { return newState; } + private void startUi(InCallState inCallState) { + final Call incomingCall = mCallList.getIncomingCall(); + final boolean isCallWaiting = (incomingCall != null && + incomingCall.getState() == Call.State.CALL_WAITING); + + // If the screen is off, we need to make sure it gets turned on for incoming calls. + // This normally works just fine thanks to FLAG_TURN_SCREEN_ON but that only works + // when the activity is first created. Therefore, to ensure the screen is turned on + // for the call waiting case, we finish() the current activity and start a new one. + // There should be no jank from this since the screen is already off and will remain so + // until our new activity is up. + if (mProximitySensor.isScreenReallyOff() && isCallWaiting) { + if (isActivityStarted()) { + mInCallActivity.finish(); + } + mInCallActivity = null; + } + + mStatusBarNotifier.updateNotificationAndLaunchIncomingCallUi(inCallState, mCallList); + } + /** * Checks to see if both the UI is gone and the service is disconnected. If so, tear it all * down. diff --git a/InCallUI/src/com/android/incallui/ProximitySensor.java b/InCallUI/src/com/android/incallui/ProximitySensor.java index 0da68efb2..5776b5630 100644 --- a/InCallUI/src/com/android/incallui/ProximitySensor.java +++ b/InCallUI/src/com/android/incallui/ProximitySensor.java @@ -154,6 +154,15 @@ public class ProximitySensor implements AccelerometerListener.OrientationListene } /** + * TODO: There is no way to determine if a screen is off due to proximity or if it is + * legitimately off, but if ever we can do that in the future, it would be useful here. + * Until then, this function will simply return true of the screen is off. + */ + public boolean isScreenReallyOff() { + return !mPowerManager.isScreenOn(); + } + + /** * @return true if this device supports the "proximity sensor * auto-lock" feature while in-call (see updateProximitySensorMode()). */ |