반응형

안드로이드 유저라면 누구나 앱 사용중에 볼륨버튼을 누르면 공감할만한 내용이지 않을까 한다..



앱 사용중에 볼륨을 누르면 대부분 아래  벨소리 화면이 아닌 미디어화면을 원하리라 생각한다...

(이거 나만 그래?)


이거 말고......





이거를 원한다!!!



오늘은 안드로이드 개발자라면 누구나 본인이 개발중인 앱에서 볼륨버튼조작 시, 특정 타입으로 볼륨설정 및 위와 같은 팝업화면이 나올 수 있는 방법에 대해 설명하고자 한다.




먼저, 볼륨키를 눌렀을때 이벤트롤 체크해보자.

다행히도 안드로이드는 'onKeyDown' 을 통해 안드로이드 내 발생되는 Key 이벤트를 제공해주고 있었다.


@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_VOLUME_DOWN:
case KeyEvent.KEYCODE_VOLUME_UP:
setVolumeControlStream(AudioManager.STREAM_MUSIC);
break;
}
return super.onKeyDown(keyCode, event);
}


위의 코드처럼 볼륨버튼을 눌렀을 때 볼륨컨트롤타입을 'STREM_MUSIC'으로 주면 쉽게 처리할 수 있다.



자, 그럼 볼륨버튼 눌렀을 때 어떤 볼륨설정창이 나올지는 처리했고..... 이젠 내가 만드는 모든 앱 내 어디서든 위의 코드가 동작해야한다.


해당 고민의 대한 답은 간단하다!

모든 Activity에 위의 코드를 집어넣으면 된다. (뭔가 이상한데??)


개발중인 앱의 규모가 작고 사용하는 Activity가 적거나 단일이라면 위의 방법도 무방하지만 대부분의 앱들이 다량의 Activity의 향연인것을 생각하면 위의 제안은 솔루션이 될 수 없다.


편하게 공통적인 동작, 기본 설정이 처리되는 BaseActivity를 별도로 만들어 BaseActivity 내 위의 코드를 정의 후, 앱에서 생성되는 모든 Activity가 BaseActivity를 상속하여 구현하도록 하면 쉽게 처리가능하다.



마무리하면서....

안드로이드 내 볼륨 키 클릭 시 내가 원하는 동작을 정의하고자 할때!



1. Activity 내 'onKeyDown' 을 통해 해당 이벤트 처리

2. BaseActivity 내 'onKeyDown' 처리 후 Activity들이 BaseActivity를 상속하여 구현




이상입니다.





반응형

+ Recent posts