2015-06-12 3 views
2

Я разрабатываю 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; 
     } 
    } 
} 

Спасибо за вашу помощь

ответ

0

Возвращение верно, если вы обработали событие. Не распространяйте его вперед. Приложение не будет закрыто.

Смежные вопросы