diff options
-rw-r--r-- | InCallUI/src/com/android/incallui/CallList.java | 8 | ||||
-rw-r--r-- | InCallUI/src/com/android/incallui/ProximitySensor.java | 7 |
2 files changed, 12 insertions, 3 deletions
diff --git a/InCallUI/src/com/android/incallui/CallList.java b/InCallUI/src/com/android/incallui/CallList.java index 0908b56ad..7f76cd5dd 100644 --- a/InCallUI/src/com/android/incallui/CallList.java +++ b/InCallUI/src/com/android/incallui/CallList.java @@ -282,6 +282,14 @@ public class CallList implements InCallPhoneListener { return result; } + public boolean hasLiveCall() { + Call call = getFirstCall(); + if (call == null) { + return false; + } + return call != getDisconnectingCall() && call != getDisconnectedCall(); + } + /** * Returns the first call found in the call map with the specified call modification state. * @param state The session modification state to search for. diff --git a/InCallUI/src/com/android/incallui/ProximitySensor.java b/InCallUI/src/com/android/incallui/ProximitySensor.java index 02de4fd22..5bde190c1 100644 --- a/InCallUI/src/com/android/incallui/ProximitySensor.java +++ b/InCallUI/src/com/android/incallui/ProximitySensor.java @@ -81,9 +81,10 @@ public class ProximitySensor implements AccelerometerListener.OrientationListene @Override public void onStateChange(InCallState oldState, InCallState newState, CallList callList) { // We ignore incoming state because we do not want to enable proximity - // sensor during incoming call screen - boolean isOffhook = (InCallState.INCALL == newState - || InCallState.OUTGOING == newState); + // sensor during incoming call screen. We check hasLiveCall() because a disconnected call + // can also put the in-call screen in the INCALL state. + boolean hasOngoingCall = InCallState.INCALL == newState && callList.hasLiveCall(); + boolean isOffhook = (InCallState.OUTGOING == newState) || hasOngoingCall; if (isOffhook != mIsPhoneOffhook) { mIsPhoneOffhook = isOffhook; |