我正在开发一个使用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;
}
}
}
感谢您的帮助
答案 0 :(得分:0)
如果您已处理此事件,则返回true。不要向前传播它。该应用程序不会以这种方式关闭。