Android 상에서 2개 이상의 Key가 같이 눌러 졌을때의 처리방법이 궁금합니다.
예를들면 HOME+MENU 키가 같이 눌려 졌을때 Applicaiton에서 특정한 기능을 수행하고 싶은데요,
Android KeyEvent상에는 각각의 Key Press 에 대해서만 정의되어 있는 것 같습니다.
Key값을 가지고 핸들링 하는 함수( 예를들면 onKey())에서 어떻게 처리 할 수 있는지 알려 주시면 감사하겠습니다.
어차피 이벤트 큐에 들어간 것이 올라오는 것 일때니깐, 이벤트 간의 시간차가 적정선 이내이면 멀티 키로 처리하면 되지 않을까요?
다중키 체크가 따로 있는지는 졸린눈으로 비벼봤더니 안보여서 ㅡ.ㅡ.;; 간단하게 여러키의 누른 상태가 동시에 유지가 되는지 체크해보니 되긴 할 듯 하네요. (키가 눌러졌을때 상태체크 flag를 설정하고 뗐을때 해제) 그런데 안드로이드폰은 실기에선 어떨지 모르겠는데 에뮬에서는 일단 체크가 되는 듯 합니다. (기존 피쳐폰들 경우에는 하도 막장 키들이 많아서 -_-;; - 누른거만 인식한다던지 무조건 키하나만 인식한다든지 등등 ㅡㅡ;;) 근데 얼핏 테스트해보니 A누르고 S누른상태에서 S를 떼니 A도 같이 떨어진걸로 인식하네요. 살짝 오묘한듯..
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
public class ButtonTest extends Activity {
boolean[] keyPressed = new boolean[26];
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
keyPressed[keyCode - KeyEvent.KEYCODE_A] = true;
String multiple = new String();
for (int i=0; i<keyPressed.length; i++) {
if (keyPressed[i] == true) {
multiple += KeyEvent.KEYCODE_A + i + ", ";
}
}
Log.v("key down", multiple);
return super.onKeyDown(keyCode, event);
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
keyPressed[keyCode - KeyEvent.KEYCODE_A] = false;
String multiple = new String();
for (int i=0; i<keyPressed.length; i++) {
if (keyPressed[i] == true) {
multiple += KeyEvent.KEYCODE_A + i + ", ";
}
}
Log.v("key up", multiple);
return super.onKeyUp(keyCode, event);
}
}