Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to capture the onSwipeDown event on google glass using a native app?

I was able to capture most of the events triggered by the touchpad of a google glass using the SimpleOnGestureListener in a native app.

With the following code you can capture these events

MainActivity.java:

private GestureDetector gestureDetector;

@Override
protected void onCreate(Bundle savedInstanceState)
{
    gestureDetector = new GestureDetector(this, new MyGestureListener());
}

@Override
public boolean onGenericMotionEvent(MotionEvent event)
{
    gestureDetector.onTouchEvent(event);
    return true;
}

MyGestureListener:

public class MyGestureListener extends android.view.GestureDetector.SimpleOnGestureListener
{
    @Override
    public boolean onFling(MotionEvent start, MotionEvent finish, float velocityX, float velocityY)
    {     
        // check for velocity direction to identify swipe forward / backward / up and down
        return true;
    } 
}

I found two different sources for gesture processing I tried:

  1. Capture Glass D-Pad events in Android
  2. Capturing Gesture Controls for Use in Native Android Glass Apps

But with none of them I was able to catch the swipeDown event.

The callback onFling() is only called on "swipe forward", "swipe backward" and "swipe up" but never called when I do a "swipe down".

Any hints or have you already managed to catch the swipe down? I am really clueless here.

like image 605
Alex Avatar asked Aug 08 '13 09:08

Alex


1 Answers

Here is the (weird) solution.

It seems that the swipeDown gesture is not really a gesture but more a button click.

That means that you should use the callback methods of your activity to capture these events.

private static final int KEY_SWIPE_DOWN = 4;

@Override
public boolean onKeyUp(int keyCode, KeyEvent event)
{
    if (keyCode == KEY_SWIPE_DOWN)
    {
        // there was a swipe down event
        return true;
    }
    return false;
}

I think you do not need to care about the onKeyDown() callback because this callback is only triggered directly before the onKeyUp() event and not when you are beginning the gesture.

like image 112
Alex Avatar answered Nov 08 '22 14:11

Alex