From ae1bbbb329525d4d5652be218e1ced258306bff9 Mon Sep 17 00:00:00 2001 From: Selim Cinek Date: Tue, 13 Dec 2016 16:06:02 -0800 Subject: [PATCH] Only requiring 2 taps for accessibility on lock screen On the lock screen we were requiring two double taps in order to unlock to a notification, which seems excessive especially since talkback do their own falsing already. Test: add notification with talkback on, try double tap Test: add notification without talkback, existing logic still works Bug: 32945599 Change-Id: I07e0e4299140644f62d311d8db25ec25ff138fde --- .../statusbar/ActivatableNotificationView.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/ActivatableNotificationView.java b/packages/SystemUI/src/com/android/systemui/statusbar/ActivatableNotificationView.java index cf8d332710329..d1ab96d196fc9 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/ActivatableNotificationView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/ActivatableNotificationView.java @@ -29,6 +29,7 @@ import android.view.MotionEvent; import android.view.View; import android.view.ViewAnimationUtils; import android.view.ViewConfiguration; +import android.view.accessibility.AccessibilityManager; import android.view.animation.Interpolator; import android.view.animation.PathInterpolator; @@ -37,6 +38,7 @@ import com.android.systemui.R; import com.android.systemui.classifier.FalsingManager; import com.android.systemui.statusbar.notification.FakeShadowView; import com.android.systemui.statusbar.notification.NotificationUtils; +import com.android.systemui.statusbar.policy.AccessibilityController; import com.android.systemui.statusbar.stack.NotificationStackScrollLayout; import com.android.systemui.statusbar.stack.StackStateAnimator; @@ -99,6 +101,7 @@ public abstract class ActivatableNotificationView extends ExpandableOutlineView private final int mTintedRippleColor; private final int mLowPriorityRippleColor; protected final int mNormalRippleColor; + private final AccessibilityManager mAccessibilityManager; private boolean mDimmed; private boolean mDark; @@ -199,6 +202,7 @@ public abstract class ActivatableNotificationView extends ExpandableOutlineView mNormalRippleColor = context.getColor( R.color.notification_ripple_untinted_color); mFalsingManager = FalsingManager.getInstance(context); + mAccessibilityManager = AccessibilityManager.getInstance(mContext); } @Override @@ -223,13 +227,17 @@ public abstract class ActivatableNotificationView extends ExpandableOutlineView @Override public boolean onInterceptTouchEvent(MotionEvent ev) { - if (mDimmed && !mActivated - && ev.getActionMasked() == MotionEvent.ACTION_DOWN && disallowSingleClick(ev)) { + if (mDimmed && !mActivated && ev.getActionMasked() == MotionEvent.ACTION_DOWN + && disallowSingleClick(ev) && !isTouchExplorationEnabled()) { return true; } return super.onInterceptTouchEvent(ev); } + private boolean isTouchExplorationEnabled() { + return mAccessibilityManager.isTouchExplorationEnabled(); + } + protected boolean disallowSingleClick(MotionEvent ev) { return false; } @@ -241,7 +249,7 @@ public abstract class ActivatableNotificationView extends ExpandableOutlineView @Override public boolean onTouchEvent(MotionEvent event) { boolean result; - if (mDimmed) { + if (mDimmed && !isTouchExplorationEnabled()) { boolean wasActivated = mActivated; result = handleTouchEventDimmed(event); if (wasActivated && result && event.getAction() == MotionEvent.ACTION_UP) {