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
This commit is contained in:
Selim Cinek
2016-12-13 16:06:02 -08:00
parent 0c87f87008
commit ae1bbbb329

View File

@@ -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) {