6

In Google Glass XE16 zu fangen GestureDetector können mehrere Gesten wie LONG_PRESS, SWIPE_DOWN erkennen, THREE_LONG_PRESS, TWO_SWIPE_DOWN, TWO_TAP & SOME OTHER GESTURES.TWO_SWIPE_DOWN TAP nicht in der Lage auf Google Glass GDK (XE16)

In Glas TWO_SWIPE_DOWN ist wie Verknüpfung Option, um alles abzubrechen und auf schwarzen Bildschirm gehen. Nach diesem schwarzen Bildschirm kommt es "ok Glas".

Aber ich muss die TWO_SWIPE_DOWN TAP überschreiben, so dass Benutzer nicht auf diese Weise außerhalb der Anwendung gehen können. Ich möchte die benutzerspezifische Nachricht anzeigen, wenn TWO_SWIPE_DOWN abgetippt wird.

Ich habe Code folgende GDK Touch Gestures wie unten:

gestureDetector.setBaseListener(new GestureDetector.BaseListener() { 
     @Override 
     public boolean onGesture(Gesture gesture) { 
      if (gesture == Gesture.TAP) { 
       return true; 
      } else if (gesture == Gesture.TWO_TAP) { 
       return true; 
      } else if (gesture == Gesture.SWIPE_RIGHT) { 
       return true; 
      } else if (gesture == Gesture.SWIPE_LEFT) { 
       return true; 
      } else if (gesture == Gesture.TWO_SWIPE_DOWN) { 
       Log.i("Checking the TAPPING of TWO_SWIPE_DOWN", "Its working fine."); 
       return true; 
      } 
      return true; 
     } 
    }); 

Above Code der Lage, jede andere tippen, ohne die TWO_SWIPE_DOWN TAP zu fangen!

Also, wie kann ich den TWO_SWIPE_DOWN TAP fangen?

+0

Es scheint, dieses Problem ist noch nicht behoben. Ich kann die TWO_SWIPE_DOWN-Geste nicht erkennen. Hast du irgendwann eine Lösung gefunden? – rottenoats

Antwort

0

Wenn Ihr Code innerhalb einer Ansicht/Surface ist dies die Implementierung dass Google

/** 
    * TextView that handles touchpad input (currently only TAP). 
    */ 
    public class TouchpadHandlingTextView extends TextView 
     implements OnAttachStateChangeListener{ 

    private final GestureDetector mTouchDetector; 

    public TouchpadHandlingTextView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     mTouchDetector = createGestureDetector(context); 
     // must set the view to be focusable 
     setFocusable(true); 
     setFocusableInTouchMode(true); 
    } 

    public TouchpadHandlingTextView(Context context) { 
     this(context, null); 
    } 

    @Override 
    public void onViewAttachedToWindow(View v) { 
     requestFocus(); 
    } 

    @Override 
    public void onViewDetachedFromWindow(View v) { 
    } 

    /** 
    * Pass a MotionEvent into the gesture detector 
    */ 
    @Override 
    public boolean dispatchGenericFocusedEvent(MotionEvent event) { 
     if (isFocused()) { 
      return mTouchDetector.onMotionEvent(event); 
     } 
     return super.dispatchGenericFocusedEvent(event); 
    } 

    /** 
    * Create gesture detector that triggers onClickListener. Implement 
    * onClickListener in your Activity and override 
    * onClick() to handle the "tap" gesture. 
    */ 
    private GestureDetector createGestureDetector(Context context) { 
     GestureDetector gd = new GestureDetector(context); 
     gd.setBaseListener(new GestureDetector.BaseListener() { 

      @Override 
      public boolean onGesture(Gesture gesture) { 
       if (gesture == Gesture.TAP) { 
        return performClick(); 
       } 
       if(gesture == Gesture.SWIPE_DOWN){ 
        //Do something instead of close app 
       return true; 
       } 
      } 
     }); 
     return gd; 
    } 
} 

dass Sie die volle Kontrolle über Ihre Ansichten Ereignisse geben liefert.

Hier ist meine Referenz von Google.

https://developers.google.com/glass/develop/gdk/touch

+0

Ich möchte hinzufügen, dass für Glass die Importanweisungen anders als normal sind. Normalerweise können Sie 'android.gesture.Gesture' und ähnliches importieren, aber für die Klasse müssen Sie alles, was Sie benötigen, von' com.google.android.glas.touchpad' importieren, sonst werden Sie alle möglichen vagen Fehler bekommen. Großartige Sache, die Google nicht Mist wie das ÜBERALL auf ihren Berührungsdokumenten auflistet. – SMT