Android 如何使用本机应用程序在google glass上捕获onSwipeDown事件?

Android 如何使用本机应用程序在google glass上捕获onSwipeDown事件?,android,google-glass,android-gesture,Android,Google Glass,Android Gesture,我能够在本机应用程序中使用SimpleGestureListener捕获谷歌眼镜触摸板触发的大多数事件 使用以下代码,您可以捕获这些事件 MainActivity.java: 私人手势检测器手势检测器; @凌驾 创建时受保护的void(Bundle savedInstanceState) { gestureDetector=新的gestureDetector(这是新的MyGestureListener()); } @凌驾 公共布尔onGenericMotionEvent(运动事件) { 手势检测

我能够在本机应用程序中使用SimpleGestureListener捕获谷歌眼镜触摸板触发的大多数事件

使用以下代码,您可以捕获这些事件

MainActivity.java:

私人手势检测器手势检测器;
@凌驾
创建时受保护的void(Bundle savedInstanceState)
{
gestureDetector=新的gestureDetector(这是新的MyGestureListener());
}
@凌驾
公共布尔onGenericMotionEvent(运动事件)
{
手势检测器。onTouchEvent(事件);
返回true;
}
MyGestureListener:

公共类MyGestureListener扩展了android.view.GestureDetector.SimpleOnGestureListener
{
@凌驾
公共布尔onFling(MotionEvent开始、MotionEvent结束、float-velocityX、float-velocityY)
{     
//检查速度方向以识别向前/向后/上下滑动
返回true;
} 
}
我找到了两个不同的手势处理来源:

  • 但是没有他们,我没能赶上游泳比赛

    回调onFling()仅在“向前滑动”、“向后滑动”和“向上滑动”时调用,但在“向下滑动”时从未调用

    有什么提示吗?或者你是否已经成功地抓住了它?我在这里真是一窍不通。

    这是(奇怪的)解决办法

    向下滑动手势似乎不是一种真正的手势,而是一种按钮点击

    这意味着您应该使用活动的回调方法来捕获这些事件

    private static final int KEY\u swip\u DOWN=4;
    @凌驾
    公共布尔onKeyUp(int-keyCode,KeyEvent事件)
    {
    如果(键代码==向下滑动键)
    {
    //发生了一次扫荡事件
    返回true;
    }
    返回false;
    }
    

    我认为您不需要关心onKeyDown()回调,因为此回调仅在onkeydowp()之前直接触发事件,而不是当您开始手势时。

    有趣的是,我认为这可能是某种错误,因为至少在安装了XE12的情况下,我的眼镜似乎每十次中就有一次捕捉到向下滑动手势。我计算的实际测试是5、15、3和8个活动
    onKeyUp
    GestureDetector.SimpleOnGestureListener
    onFling


    所以我捕获了这两个函数,并在每个函数中执行相同的函数。

    根据GDK文档,这就是如何完成的。向下滑动将转换为返回键代码

        public boolean onKeyDown(int keycode, KeyEvent event) {
              if (keycode == KeyEvent.KEYCODE_BACK) {
               // Do something here
                  return true;
              }
          ...
            super.onKeyDown(keyCode, event)
            }