AOD: Enable double tap in AOD
Bug: 30876804
Test: Enable AOD; turn off phone, double tap; receive notification, double tap outside notification; on lockscreen, tap shade, should still bounce
Change-Id: Ifb32461432f64c333b3a86a29b5ac51dfc27a43d
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
index 6da9e90..b4a4e59 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
@@ -766,16 +766,17 @@
mIsExpansionFromHeadsUp = true;
MetricsLogger.count(mContext, COUNTER_PANEL_OPEN_PEEK, 1);
}
+ boolean handled = false;
if ((!mIsExpanding || mHintAnimationRunning)
&& !mQsExpanded
&& mStatusBar.getBarState() != StatusBarState.SHADE
&& !mDozing) {
- mAffordanceHelper.onTouchEvent(event);
+ handled |= mAffordanceHelper.onTouchEvent(event);
}
if (mOnlyAffordanceInThisMotion) {
return true;
}
- mHeadsUpTouchHelper.onTouchEvent(event);
+ handled |= mHeadsUpTouchHelper.onTouchEvent(event);
if (mQsOverscrollExpansionEnabled && !mHeadsUpTouchHelper.isTrackingHeadsUp()
&& handleQsTouch(event)) {
@@ -784,9 +785,10 @@
if (event.getActionMasked() == MotionEvent.ACTION_DOWN && isFullyCollapsed()) {
MetricsLogger.count(mContext, COUNTER_PANEL_OPEN, 1);
updateVerticalPanelPosition(event.getX());
+ handled = true;
}
- super.onTouchEvent(event);
- return true;
+ handled |= super.onTouchEvent(event);
+ return mDozing ? handled : true;
}
private boolean handleQsTouch(MotionEvent event) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
index eca8939..213b0aa 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
@@ -4872,7 +4872,7 @@
}
public void wakeUpIfDozing(long time, View where) {
- if (mDozing && mDozeScrimController.isPulsing()) {
+ if (mDozing) {
PowerManager pm = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
pm.wakeUp(time, "com.android.systemui:NODOZE");
mWakeUpComingFromTouch = true;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java
index 7c42d00..1848d4e 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java
@@ -34,6 +34,7 @@
import android.net.Uri;
import android.os.Bundle;
import android.os.IBinder;
+import android.os.SystemClock;
import android.util.AttributeSet;
import android.view.ActionMode;
import android.view.InputQueue;
@@ -65,6 +66,7 @@
public static final boolean DEBUG = StatusBar.DEBUG;
private DragDownHelper mDragDownHelper;
+ private DoubleTapHelper mDoubleTapHelper;
private NotificationStackScrollLayout mStackScrollLayout;
private NotificationPanelView mNotificationPanel;
private View mBrightnessMirror;
@@ -89,6 +91,10 @@
mTransparentSrcPaint.setColor(0);
mTransparentSrcPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC));
mFalsingManager = FalsingManager.getInstance(context);
+ mDoubleTapHelper = new DoubleTapHelper(this, active -> {}, () -> {
+ mService.wakeUpIfDozing(SystemClock.uptimeMillis(), this);
+ return true;
+ }, null, null);
}
@Override
@@ -256,7 +262,7 @@
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
if (mService.isDozing() && !mService.isPulsing()) {
- // Discard all touch events in always-on.
+ // Capture all touch events in always-on.
return true;
}
boolean intercept = false;
@@ -282,7 +288,11 @@
@Override
public boolean onTouchEvent(MotionEvent ev) {
- boolean handled = mService.isDozing() && !mService.isPulsing();
+ boolean handled = false;
+ if (mService.isDozing()) {
+ mDoubleTapHelper.onTouchEvent(ev);
+ handled = true;
+ }
if (mService.getBarState() == StatusBarState.KEYGUARD
&& (!handled || mDragDownHelper.isDraggingDown())) {
// we still want to finish our drag down gesture when locking the screen