10

ネイティブ アプリでSimpleOnGestureListenerを使用して、Google グラスのタッチパッドによってトリガーされたほとんどのイベントをキャプチャできました。

次のコードを使用すると、これらのイベントをキャプチャできます

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;
    } 
}

私が試したジェスチャ処理の 2 つの異なるソースを見つけました。

  1. Android で Glass D-Pad イベントをキャプチャする
  2. ネイティブ Android Glass アプリで使用するためのジェスチャー コントロールのキャプチャ

しかし、それらのどれも使用せずに、swipeDown イベントをキャッチできました。

コールバック onFling() は、「前にスワイプ」、「後ろにスワイプ」、および「上にスワイプ」でのみ呼び出されますが、「下にスワイプ」すると呼び出されることはありません。

ヒントはありますか、それともスワイプダウンをキャッチできましたか? 私はここで本当に無知です。

4

3 に答える 3

9

これが(奇妙な)解決策です。

swipeDownジェスチャは実際にはジェスチャではなく、ボタン クリックのようです。

つまり、これらのイベントをキャプチャするには、アクティビティのコールバック メソッドを使用する必要があります。

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;
}

onKeyDown() コールバックはonKeyUp() イベントの直前にのみトリガーされ、ジェスチャの開始時にはトリガーされないため、気にする必要はないと思います。

于 2013-08-08T22:39:12.780 に答える
0

GDKのドキュメントによると、これがその方法です。下方向へのスワイプは KEYCODE_BACK に変換されます。

    public boolean onKeyDown(int keycode, KeyEvent event) {
          if (keycode == KeyEvent.KEYCODE_BACK) {
           // Do something here
              return true;
          }
      ...
        super.onKeyDown(keyCode, event)
        } 
于 2014-07-09T16:18:20.803 に答える