안드로이드 프로그래밍에서 특수키 제어하는 방법입니다.

특수키란 키보드로 입력하는 키 외에 뒤로가기, 홈버튼, 볼륨버튼.. 등을 말합니다.

먼저 실행 될 activity에서 우클릭 - Generate를 눌러줍니다.



생성자, getter, setter...등 목록이 많이 있습니다.

이 중에 Override Methods를 선택합니다.



OnKeyDown이라고 검색해봅시다.(창이 뜬 상태에서 그냥 치면 검색됩니다.)

없는 경우 이미 메소드를 생성한 경우입니다.



OK버튼을 누르면 아래와 같은 코드가 생깁니다.

@Override라는 문구가 싫으신 분은 Insert @Override 체크버튼을 해제하시면 됩니다.



자 이제 이 메소드에서 특수키 이벤트를 구현하시면 됩니다.

다음은 특수키 목록입니다.


KEYCODE_BACK : 뒤로가기 버튼

KEYCODE_VOLUME_DOWN : 볼륨 ↓ 버튼

KEYCODE_VOLUME_UP : 볼륨 ↑ 버튼

KEYCODE_HOME : 홈 버튼


이외에 키보드에서 입력할 수 있는 모든 키는 코드로 정의되어있습니다.

이번시간에는 특수키 제어만 해보겠습니다.


다음과 같이 코드를 작성합니다.


public boolean onKeyDown(int keyCode, KeyEvent event) {

switch(keyCode){

case KeyEvent.KEYCODE_BACK :

// 여기에 뒤로가기 버튼을 눌렀을 때 행동 입력

break;

case KeyEvent.KEYCODE_VOLUME_DOWN :

// 여기에 볼륨 ↓ 버튼을 눌렀을 때 행동 입력

break;

case KeyEvent.KEYCODE_VOLUME_UP

// 여기에 볼륨 ↑ 버튼을 눌렀을 때 행동 입력

break;

case KeyEvent.KEYCODE_HOME

// 여기에 홈 버튼을 눌렀을 때 행동 입력

break;

}

return super.onKeyDown(keyCode, event);

}


필요한 키 코드만 복사해서 붙여넣어 사용하면됩니다.

단순히 키 입력을 막고싶다 하시는 분은


case KeyEvent.KEYCODE_BACK :

return;


라고 입력하시면 됩니다.



* 수정(8/24)

HOME키 이벤트는 위 코드로 제어할 시 제대로 작동이 안됩니다.

따라서 다음과 같이 처리합니다.

우클릭 - Generate - Override Methods 선택 후 onUserLeaveHint 검색하고 생성합니다.



휴대폰의 홈 키 또는 작업탭 키를 눌렀을 때 작동하는 것을 확인했습니다.



저는 Log로 작성했지만 홈 키 또는 작업탭 키를 눌렀을 때 작동 할 코드를 Log부분에 작성하시면 됩니다.




* 참고 : KeyEvent는 해당 코드를 입력한 Activity(화면)에서만 발생합니다.


* 참고 (더 많은 키 코드를 확인하고싶은 분은  아래 링크로 가서 확인하세요)

https://developer.android.com/reference/android/view/KeyEvent



오타 및 질문사항은 댓글로 달아주세요!!






to Top