2012-02-19 2 views
2

오늘 xperia mini pro에 게임을로드하려고 시도했는데 하드웨어 버튼을 누를 때마다 onKeyDown 콜백이 예상대로 수신되었지만 즉시 동일한 키에 onKeyUp이 도착했고 실제로 키, 콜백 메소드가 호출되지 않습니다.키 릴리스로 안드로이드 키보드 문제

입력 코드는 다음과 같습니다

public final boolean buttons(int keyCode, KeyEvent event, boolean state) { 
    boolean handled = true; 
    switch (keyCode) { 
     case KeyEvent.KEYCODE_DPAD_UP: 
     case KeyEvent.KEYCODE_W: 
      this.input.KEY_UP = state; 
      Logger.print("UP: " + state); 
     break; 
     case KeyEvent.KEYCODE_DPAD_RIGHT: 
      Logger.print("RIGHT: " + state); 
      this.input.KEY_RIGHT = state; 
     break; 
     case KeyEvent.KEYCODE_DPAD_DOWN: 
     case KeyEvent.KEYCODE_S: 
      this.input.KEY_DOWN = state; 
      Logger.print("DOWN: " + state); 
     break; 
     case KeyEvent.KEYCODE_DPAD_LEFT: 
      this.input.KEY_LEFT = state; 
     break; 
     case KEYCODE_BUTTON_SQUARE: 
     case KeyEvent.KEYCODE_L: 
      this.input.KEY_FORWARD = state; 
     break; 
     case KEYCODE_BUTTON_TRIANGLE: 
     case KeyEvent.KEYCODE_K: 
      this.input.KEY_BACKWARD = state; 
     break; 
     case KeyEvent.KEYCODE_DPAD_CENTER: 
      this.input.KEY_ACTION = state; 
     break; 
     default: 
      handled = false; 
     break; 
    } 
    return handled; 
} 

이 문제를 해결하는 방법이 있나요?

편집 : onKeyPressedreleased에 대해 죄송합니다. 사실 onKeyDownonKeyUp 의미 :

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    return features.inputManager.inputButtons.press(keyCode, event) ? 
      true : super.onKeyDown(keyCode, event); 
} 

@Override 
public boolean onKeyUp(int keyCode, KeyEvent event) { 
    return features.inputManager.inputButtons.release(keyCode, event) ? 
      true : super.onKeyUp(keyCode, event); 
} 

언론과 릴리스 방법 중 하나를 true 또는 false 매개 변수를 사용하여 버튼 메서드를 호출합니다.

답변

0

한번에 사용하기 :

@Override 
public boolean onKeyUp(inr keyCode,KeyEvent event) { 
//your stuffs 
}