Android:在活动停止前按下/释放Catch鼠标滚轮按钮

时间:2015-06-12 08:45:12

标签: android events mousewheel

我正在开发一个使用Java的Android应用程序,它必须检测来自USB连接的真实鼠标的事件,并通过网络将它们发送到将使用这些事件的计算机。

我的问题:我可以检测鼠标滚轮按钮事件(滚动,按下,释放),但当用户按下滚轮按钮时,应用程序退出,然后调用回调。

我的问题:是否有可能在应用退出之前捕获事件,并阻止默认行为?如果是这样,怎么样?为什么我太晚才能看到这个事件?

以下是我的活动中声明的功能:

 @Override
 public boolean onGenericMotionEvent(MotionEvent event) {
    int action = MotionEventCompat.getActionMasked(event);
    int pointerId = event.getPointerId(0);

    if (event.getAction() == MotionEvent.ACTION_HOVER_MOVE) {
        Log.d(name, "onGenericMotionEvent : MotionEvent.ACTION_HOVER_MOVE " + MotionEvent.ACTION_HOVER_MOVE);
        return true;
    } else if (event.getAction() == MotionEvent.ACTION_SCROLL) {
        Log.d(name, "onGenericMotionEvent : MotionEvent.ACTION_SCROLL " + MotionEvent.ACTION_SCROLL);
        return true;
    } else if (event.getAction() == MotionEvent.ACTION_HOVER_EXIT) {
        Log.d(name, "why does is happen after onPause ??? onGenericMotionEvent : MotionEvent.ACTION_HOVER_EXIT " + MotionEvent.ACTION_HOVER_EXIT);
        return true;
    } else {
        //Log.d(name, "onGenericMotionEvent : " + MotionEvent.actionToString(event.getAction()) + " " + event.getAction());
    }
    return super.onGenericMotionEvent(event);
}

以下是我阻止鼠标右键单击关闭应用的方法:     public boolean onKeyUp(int keyCode,KeyEvent event){         int source = event.getSource();

    boolean mouseRightButton = false;

    if (source == InputDevice.SOURCE_TOUCHSCREEN) {
        Log.e(name, "onKeyUp from touchscreen");
    } else if (source == InputDevice.SOURCE_MOUSE) {
        Log.e(name, "onKeyUp from mouse");
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            Log.e(name, "right click");
            mouseRightButton = true;
            return true;
        }
    } 
}

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

如果您已处理此事件,则返回true。不要向前传播它。该应用程序不会以这种方式关闭。