@Override
 public boolean onTouchEvent(MotionEvent ev) {
   if (SystemClock.elapsedRealtime() < mStartTouchTime) {
     return false;
   }
   mBar.resetHeadsUpDecayTimer();
   return mEdgeSwipeHelper.onTouchEvent(ev)
       || mSwipeHelper.onTouchEvent(ev)
       || super.onTouchEvent(ev);
 }
  public boolean showNotification(NotificationData.Entry headsUp) {
    if (mHeadsUp != null && headsUp != null && !mHeadsUp.key.equals(headsUp.key)) {
      // bump any previous heads up back to the shade
      release();
    }

    mHeadsUp = headsUp;
    if (mContentHolder != null) {
      mContentHolder.removeAllViews();
    }

    if (mHeadsUp != null) {
      mMostRecentPackageName = mHeadsUp.notification.getPackageName();
      mHeadsUp.row.setSystemExpanded(true);
      mHeadsUp.row.setSensitive(false);
      mHeadsUp.row.setHeadsUp(true);
      mHeadsUp.row.setHideSensitive(false, false /* animated */, 0 /* delay */, 0 /* duration */);
      if (mContentHolder == null) {
        // too soon!
        return false;
      }
      mContentHolder.setX(0);
      mContentHolder.setVisibility(View.VISIBLE);
      mContentHolder.setAlpha(mMaxAlpha);
      mContentHolder.addView(mHeadsUp.row);
      sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED);

      mSwipeHelper.snapChild(mContentHolder, 1f);
      mStartTouchTime = SystemClock.elapsedRealtime() + mTouchSensitivityDelay;

      mHeadsUp.setInterruption();

      // 2. Animate mHeadsUpNotificationView in
      mBar.scheduleHeadsUpOpen(
          TextUtils.equals(
              mHeadsUp.notification.getNotification().category, Notification.CATEGORY_CALL));

      // 3. Set alarm to age the notification off
      mBar.resetHeadsUpDecayTimer();
    }
    return true;
  }