2011년 9월 3일 토요일

하드웨어키 long press 이벤트 막기

제조사 마다 다를 수는 있지만 하드웨어 키를 오래 누르면 폰 기본으로 실행되는 기능이 있다.
 - 메뉴키를 오래 누르면 가상 키보드가 뜬다.
 - 검색 버튼을 오래 누르면 음성 검색 기능이 실행된다.

1) 메뉴키 오래 눌러 가상 키보드 뜨는 것 막기
메뉴키를 오래 눌러 가상 키보드가 뜨는 것을 막기 위해서는 onKeyDown 함수를 상속받아서 key code 값이 KeyEvent.KEYCODE_MENU 이고 함수의 매개변수로 넘어오는 KeyEvent 의 isLongPress() 함수가 true 를 리턴하면 true 를 리턴하여 키보드가 뜨는 것을 막을 수 있다.

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
	if (keyCode == KeyEvent.KEYCODE_MENU) {
		if (event.isLongPress()) {
			return true;
		}
	}
	return super.onKeyDown(keyCode, event);
}

참고로 onKeyLongPress 함수에서 처리해 보았는데 제대로 작동하지 않았다.

2) 검색 버튼 오래 눌렀을 때 검색 기능 막기
검색 버튼을 오래 눌렀을 때 검색 기능이 실행되는 것을 막고 싶으면 onKeyLongPress 에서 key code 값이 KeyEvent.KEYCODE_SEARCH 이면 true 를 리턴하면 된다.

@Override
public boolean onKeyLongPress(int keyCode, KeyEvent event) {
	if (keyCode == KeyEvent.KEYCODE_SEARCH) {
		return true;
	}
	return super.onKeyLongPress(keyCode, event);
}

댓글 없음:

댓글 쓰기