I'm testing a game trying to bind phisical keyboard keys to it. I implemented onKeyUp and onKeyDown to know when the user has pressed a key for move. The problem is that onKeyDown event is getting called repeatedly every 30-40ms.
In theory it must be called only one time if i'm pressing the key without doing onKeyUp, but it is getting called a lot of times until I do keyUp.
What is wrong? this is the code:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
int factor = GameState.getInstance().getSpaceship().getSpeedFactorCorrespondence();
int movementRange = sh/factor;
switch (keyCode) {
case KeyEvent.KEYCODE_W:
Log.d("XX_KEYBOARD","onKeyDown KEYCODE_W "+keyCode);
GameState.getInstance().setJoyY(movementRange);
return true;
case KeyEvent.KEYCODE_A:
Log.d("XX_KEYBOARD","onKeyDown KEYCODE_A "+keyCode);
GameState.getInstance().setJoyX(-movementRange);
return true;
case KeyEvent.KEYCODE_S:
Log.d("XX_KEYBOARD","onKeyDown KEYCODE_S "+keyCode);
GameState.getInstance().setJoyY(-movementRange);
return true;
case KeyEvent.KEYCODE_D:
Log.d("XX_KEYBOARD","onKeyDown KEYCODE_D "+keyCode);
GameState.getInstance().setJoyX(movementRange);
return true;
case KeyEvent.KEYCODE_J:
Log.d("XX_KEYBOARD","onKeyDown KEYCODE_J "+keyCode);
touchX=sw/2;
touchY=sh/2;
LaserManager.getInstance().startLaserThread();
return true;
default:
Log.d("XX_KEYBOARD","onKeyDown default "+keyCode);
return super.onKeyDown(keyCode, event);
}
}