Allow home button to be tapped while a incoming call shows a HUN
am: 64be772e03
Change-Id: I459d3e0160f0b4acdd64e31dc31948685a98cf2a
This commit is contained in:
@@ -17,6 +17,19 @@
|
||||
package com.android.systemui.statusbar.phone;
|
||||
|
||||
|
||||
import static android.app.StatusBarManager.NAVIGATION_HINT_BACK_ALT;
|
||||
import static android.app.StatusBarManager.NAVIGATION_HINT_IME_SHOWN;
|
||||
import static android.app.StatusBarManager.WINDOW_STATE_HIDDEN;
|
||||
import static android.app.StatusBarManager.WINDOW_STATE_SHOWING;
|
||||
import static android.app.StatusBarManager.windowStateToString;
|
||||
import static com.android.systemui.statusbar.phone.BarTransitions.MODE_LIGHTS_OUT;
|
||||
import static com.android.systemui.statusbar.phone.BarTransitions.MODE_LIGHTS_OUT_TRANSPARENT;
|
||||
import static com.android.systemui.statusbar.phone.BarTransitions.MODE_OPAQUE;
|
||||
import static com.android.systemui.statusbar.phone.BarTransitions.MODE_SEMI_TRANSPARENT;
|
||||
import static com.android.systemui.statusbar.phone.BarTransitions.MODE_TRANSLUCENT;
|
||||
import static com.android.systemui.statusbar.phone.BarTransitions.MODE_TRANSPARENT;
|
||||
import static com.android.systemui.statusbar.phone.BarTransitions.MODE_WARNING;
|
||||
|
||||
import android.animation.Animator;
|
||||
import android.animation.AnimatorListenerAdapter;
|
||||
import android.annotation.NonNull;
|
||||
@@ -78,6 +91,7 @@ import android.provider.Settings;
|
||||
import android.service.notification.NotificationListenerService;
|
||||
import android.service.notification.NotificationListenerService.RankingMap;
|
||||
import android.service.notification.StatusBarNotification;
|
||||
import android.telecom.TelecomManager;
|
||||
import android.util.ArraySet;
|
||||
import android.util.DisplayMetrics;
|
||||
import android.util.EventLog;
|
||||
@@ -99,6 +113,7 @@ import android.view.animation.AccelerateInterpolator;
|
||||
import android.view.animation.Interpolator;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.android.internal.logging.MetricsLogger;
|
||||
import com.android.internal.logging.MetricsProto.MetricsEvent;
|
||||
import com.android.internal.statusbar.NotificationVisibility;
|
||||
@@ -117,7 +132,6 @@ import com.android.systemui.Interpolators;
|
||||
import com.android.systemui.Prefs;
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.SystemUIFactory;
|
||||
import com.android.systemui.assist.AssistManager;
|
||||
import com.android.systemui.classifier.FalsingLog;
|
||||
import com.android.systemui.classifier.FalsingManager;
|
||||
import com.android.systemui.doze.DozeHost;
|
||||
@@ -172,7 +186,8 @@ import com.android.systemui.statusbar.policy.UserInfoController;
|
||||
import com.android.systemui.statusbar.policy.UserSwitcherController;
|
||||
import com.android.systemui.statusbar.policy.ZenModeController;
|
||||
import com.android.systemui.statusbar.stack.NotificationStackScrollLayout;
|
||||
import com.android.systemui.statusbar.stack.NotificationStackScrollLayout.OnChildLocationsChangedListener;
|
||||
import com.android.systemui.statusbar.stack.NotificationStackScrollLayout
|
||||
.OnChildLocationsChangedListener;
|
||||
import com.android.systemui.statusbar.stack.StackStateAnimator;
|
||||
import com.android.systemui.statusbar.stack.StackViewState;
|
||||
import com.android.systemui.volume.VolumeComponent;
|
||||
@@ -186,19 +201,6 @@ import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static android.app.StatusBarManager.NAVIGATION_HINT_BACK_ALT;
|
||||
import static android.app.StatusBarManager.NAVIGATION_HINT_IME_SHOWN;
|
||||
import static android.app.StatusBarManager.WINDOW_STATE_HIDDEN;
|
||||
import static android.app.StatusBarManager.WINDOW_STATE_SHOWING;
|
||||
import static android.app.StatusBarManager.windowStateToString;
|
||||
import static com.android.systemui.statusbar.phone.BarTransitions.MODE_LIGHTS_OUT;
|
||||
import static com.android.systemui.statusbar.phone.BarTransitions.MODE_LIGHTS_OUT_TRANSPARENT;
|
||||
import static com.android.systemui.statusbar.phone.BarTransitions.MODE_OPAQUE;
|
||||
import static com.android.systemui.statusbar.phone.BarTransitions.MODE_SEMI_TRANSPARENT;
|
||||
import static com.android.systemui.statusbar.phone.BarTransitions.MODE_TRANSLUCENT;
|
||||
import static com.android.systemui.statusbar.phone.BarTransitions.MODE_TRANSPARENT;
|
||||
import static com.android.systemui.statusbar.phone.BarTransitions.MODE_WARNING;
|
||||
|
||||
public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
|
||||
DragDownHelper.DragDownCallback, ActivityStarter, OnUnlockMethodChangedListener,
|
||||
HeadsUpManager.OnHeadsUpChangedListener, DisplayManager.DisplayListener {
|
||||
@@ -1304,9 +1306,29 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
|
||||
};
|
||||
|
||||
private final View.OnTouchListener mHomeActionListener = new View.OnTouchListener() {
|
||||
public boolean mBlockedThisTouch;
|
||||
|
||||
@Override
|
||||
public boolean onTouch(View v, MotionEvent event) {
|
||||
if (mBlockedThisTouch && event.getActionMasked() != MotionEvent.ACTION_DOWN) {
|
||||
return true;
|
||||
}
|
||||
// If an incoming call is ringing, HOME is totally disabled.
|
||||
// (The user is already on the InCallUI at this point,
|
||||
// and his ONLY options are to answer or reject the call.)
|
||||
switch (event.getAction()) {
|
||||
case MotionEvent.ACTION_DOWN:
|
||||
mBlockedThisTouch = false;
|
||||
TelecomManager telecomManager = mContext.getSystemService(TelecomManager.class);
|
||||
if (telecomManager != null && telecomManager.isRinging()) {
|
||||
if (mStatusBarKeyguardViewManager.isShowing()) {
|
||||
Log.i(TAG, "Ignoring HOME; there's a ringing incoming call. " +
|
||||
"No heads up");
|
||||
mBlockedThisTouch = true;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case MotionEvent.ACTION_UP:
|
||||
case MotionEvent.ACTION_CANCEL:
|
||||
awakenDreams();
|
||||
|
||||
@@ -3061,15 +3061,6 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
||||
return -1;
|
||||
}
|
||||
|
||||
// If an incoming call is ringing, HOME is totally disabled.
|
||||
// (The user is already on the InCallUI at this point,
|
||||
// and his ONLY options are to answer or reject the call.)
|
||||
TelecomManager telecomManager = getTelecommService();
|
||||
if (telecomManager != null && telecomManager.isRinging()) {
|
||||
Log.i(TAG, "Ignoring HOME; there's a ringing incoming call.");
|
||||
return -1;
|
||||
}
|
||||
|
||||
// Delay handling home if a double-tap is possible.
|
||||
if (mDoubleTapOnHomeBehavior != DOUBLE_TAP_HOME_NOTHING) {
|
||||
mHandler.removeCallbacks(mHomeDoubleTapTimeoutRunnable); // just in case
|
||||
|
||||
Reference in New Issue
Block a user