From 26c4fbb22fd91bd7ff8aa129e92e665415cc5922 Mon Sep 17 00:00:00 2001 From: wangqi Date: Tue, 11 Jul 2017 15:48:57 -0700 Subject: Fix bug that proximity sensor is turned on too early. This is caused by setting call state to OUTGOING after it's created but before it's connecting, which incorrectly switches state as NO_CALL -> OUTGOING -> PENDING_OUTGOING -> OUTGOING. The fix is giving it PENDING_OUTGOING state if an outgoing call is initialized but still not yet getting update from telecom to CONNECTING (in which case the call will be IDLE state). Bug: 62965119 Test: manual PiperOrigin-RevId: 161594187 Change-Id: I02c8b4dcb0bfd5101bc69f48bb99c66d4831b72e --- java/com/android/incallui/InCallPresenter.java | 4 ++-- java/com/android/incallui/ProximitySensor.java | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) (limited to 'java/com/android') diff --git a/java/com/android/incallui/InCallPresenter.java b/java/com/android/incallui/InCallPresenter.java index 64bc4048c..0dd654903 100644 --- a/java/com/android/incallui/InCallPresenter.java +++ b/java/com/android/incallui/InCallPresenter.java @@ -852,7 +852,7 @@ public class InCallPresenter implements CallList.Listener { if (newState == InCallState.NO_CALLS) { if (mBoundAndWaitingForOutgoingCall) { - return InCallState.OUTGOING; + return InCallState.PENDING_OUTGOING; } } @@ -870,7 +870,7 @@ public class InCallPresenter implements CallList.Listener { mBoundAndWaitingForOutgoingCall = isBound; mThemeColorManager.setPendingPhoneAccountHandle(handle); if (isBound && mInCallState == InCallState.NO_CALLS) { - mInCallState = InCallState.OUTGOING; + mInCallState = InCallState.PENDING_OUTGOING; } } diff --git a/java/com/android/incallui/ProximitySensor.java b/java/com/android/incallui/ProximitySensor.java index 653d85be9..db538abdc 100644 --- a/java/com/android/incallui/ProximitySensor.java +++ b/java/com/android/incallui/ProximitySensor.java @@ -102,7 +102,10 @@ public class ProximitySensor // 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; + boolean isOffhook = + InCallState.PENDING_OUTGOING == newState + || InCallState.OUTGOING == newState + || hasOngoingCall; DialerCall activeCall = callList.getActiveCall(); boolean isVideoCall = activeCall != null && activeCall.isVideoCall(); -- cgit v1.2.3