Я разрабатываю Android-приложение на Java, которое должно обнаруживать события с реальной мыши, подключенной к USB, и отправлять их по сети на компьютер, который будет использовать эти события ,Android: нажмите кнопку мыши, нажав/отпустив кнопку до остановки активности.
Моя проблема: я могу обнаруживать события кнопки мыши (прокрутка, нажатие, высвобождение), но когда пользователь нажимает кнопку колеса, приложение выходит, а обратный вызов вызывается впоследствии.
Мой вопрос: возможно ли поймать событие до выхода приложения и предотвратить поведение по умолчанию? Если да, то как? Почему я слишком поздно поймаю событие?
Вот это functios, объявленный в моей деятельности:
@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);
}
А вот как я предотвращено мышь правой кнопки мыши от закрытия приложения: общественного логического OnKeyUp (INT KEYCODE, KeyEvent события) { Int источника = 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;
}
}
}
Спасибо за вашу помощь