diff options
-rw-r--r-- | packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java | 23 | ||||
-rw-r--r-- | packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java | 32 |
2 files changed, 41 insertions, 14 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java index 8ab231b..e81cec2 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java @@ -25,12 +25,14 @@ import android.os.SystemClock; import android.os.ServiceManager; import android.util.AttributeSet; import android.util.Slog; +import android.view.accessibility.AccessibilityEvent; import android.view.HapticFeedbackConstants; import android.view.IWindowManager; import android.view.InputDevice; import android.view.KeyCharacterMap; import android.view.KeyEvent; import android.view.MotionEvent; +import android.view.SoundEffectConstants; import android.view.ViewConfiguration; import android.widget.ImageView; import android.widget.RemoteViews.RemoteView; @@ -45,6 +47,8 @@ public class KeyButtonView extends ImageView { boolean mSending; int mCode; int mRepeat; + int mTouchSlop; + Runnable mCheckLongPress = new Runnable() { public void run() { if (isPressed()) { @@ -53,6 +57,9 @@ public class KeyButtonView extends ImageView { KeyEvent.FLAG_FROM_SYSTEM | KeyEvent.FLAG_VIRTUAL_HARD_KEY | KeyEvent.FLAG_LONG_PRESS); + + sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_LONG_CLICKED); + //playSoundEffect(SoundEffectConstants.CLICK); } } }; @@ -78,6 +85,7 @@ public class KeyButtonView extends ImageView { ServiceManager.getService(Context.WINDOW_SERVICE)); setClickable(true); + mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop(); } public boolean onTouchEvent(MotionEvent ev) { @@ -100,7 +108,10 @@ public class KeyButtonView extends ImageView { if (mSending) { x = (int)ev.getX(); y = (int)ev.getY(); - setPressed(x >= 0 && x < getWidth() && y >= 0 && y < getHeight()); + setPressed(x >= -mTouchSlop + && x < getWidth() + mTouchSlop + && y >= -mTouchSlop + && y < getHeight() + mTouchSlop); } break; case MotionEvent.ACTION_CANCEL: @@ -114,12 +125,18 @@ public class KeyButtonView extends ImageView { } break; case MotionEvent.ACTION_UP: + final boolean doIt = isPressed(); setPressed(false); if (mSending) { mSending = false; - sendEvent(KeyEvent.ACTION_UP, - KeyEvent.FLAG_FROM_SYSTEM | KeyEvent.FLAG_VIRTUAL_HARD_KEY); removeCallbacks(mCheckLongPress); + if (doIt) { + sendEvent(KeyEvent.ACTION_UP, + KeyEvent.FLAG_FROM_SYSTEM | KeyEvent.FLAG_VIRTUAL_HARD_KEY); + + sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_CLICKED); + playSoundEffect(SoundEffectConstants.CLICK); + } } break; } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java index c123cea..5ab808c 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java @@ -42,11 +42,13 @@ import android.os.RemoteException; import android.os.ServiceManager; import android.text.TextUtils; import android.util.Slog; +import android.view.accessibility.AccessibilityEvent; import android.view.Gravity; import android.view.IWindowManager; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.MotionEvent; +import android.view.SoundEffectConstants; import android.view.VelocityTracker; import android.view.View; import android.view.ViewConfiguration; @@ -1181,6 +1183,8 @@ public class TabletStatusBar extends StatusBar implements // dragging off the bottom doesn't count && (int)event.getY() < v.getBottom()) { animateExpand(); + v.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_CLICKED); + v.playSoundEffect(SoundEffectConstants.CLICK); } mVT.recycle(); @@ -1264,17 +1268,23 @@ public class TabletStatusBar extends StatusBar implements case MotionEvent.ACTION_UP: case MotionEvent.ACTION_CANCEL: mHandler.removeMessages(MSG_OPEN_NOTIFICATION_PEEK); - if (action == MotionEvent.ACTION_UP - // was this a sloppy tap? - && Math.abs(event.getX() - mInitialTouchX) < mTouchSlop - && Math.abs(event.getY() - mInitialTouchY) < (mTouchSlop / 3) - // dragging off the bottom doesn't count - && (int)event.getY() < v.getBottom()) { - Message peekMsg = mHandler.obtainMessage(MSG_OPEN_NOTIFICATION_PEEK); - peekMsg.arg1 = mPeekIndex; - mHandler.removeMessages(MSG_OPEN_NOTIFICATION_PEEK); - mHandler.sendMessage(peekMsg); - peeking = true; // not technically true yet, but the next line will run + if (!peeking) { + if (action == MotionEvent.ACTION_UP + // was this a sloppy tap? + && Math.abs(event.getX() - mInitialTouchX) < mTouchSlop + && Math.abs(event.getY() - mInitialTouchY) < (mTouchSlop / 3) + // dragging off the bottom doesn't count + && (int)event.getY() < v.getBottom()) { + Message peekMsg = mHandler.obtainMessage(MSG_OPEN_NOTIFICATION_PEEK); + peekMsg.arg1 = mPeekIndex; + mHandler.removeMessages(MSG_OPEN_NOTIFICATION_PEEK); + mHandler.sendMessage(peekMsg); + + v.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_CLICKED); + v.playSoundEffect(SoundEffectConstants.CLICK); + + peeking = true; // not technically true yet, but the next line will run + } } if (peeking) { |