마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

볼륨키 와 이벤트에 관하여

0 추천
 
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = (Button) findViewById(R.id.button);
final TextView countText = (TextView) findViewById(R.id.count_text);
button.setOnTouchListener(new OnTouchListener() {
 
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
 
if (event.getAction() == MotionEvent.ACTION_DOWN)  {
onHandler1();
 
}
if (event.getAction() == MotionEvent.ACTION_UP) {
mHandler.removeCallbacks(r);
}
return true;
}
});
}
 
int count = 0;
private Handler mHandler;
private Runnable r;                           
private void onHandler1() {
mHandler = new Handler();
r = new Runnable() {
@Override
public void run() {
count++;
((TextView) findViewById(R.id.count_text)).setText(String
.valueOf(count));
mHandler.postDelayed(r, 1000);
}
};
mHandler.postDelayed(r, 1000);
}
}
 
위에 소스는 버튼을 누르고 있을때 숫자가 1초에1씩 증가 하는 소스인데요
볼륨 업키를 누르고 있을떄 숫자가 1초에 1씩 증가 하게 하고 싶습니다.
(볼륨키를 누르고 있을때는 1초에 1씩 증가 하며 볼륨키를 떌떄 증가하는것을 멈출려고 합니다.)
계속 하고있는데 잘안되네요 어떠한 방식을 사용 해야 될까요 ??

 

리뷰즈 (480 포인트) 님이 2015년 1월 8일 질문

1개의 답변

0 추천
private boolean flag = true;
private Handler handler = new Handler();

@Override
protected void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	setContentView(R.layout.activity_main);
}
	
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
	 switch(keyCode)
        {
        case KeyEvent.KEYCODE_VOLUME_DOWN:
        	if(flag) {
        		// 볼륨 다운 로직 추가
        		Log.i("test", "Volume Down");
        		
        		flag = false;
        		handler.postDelayed(new Runnable() {
						
					@Override
					public void run() {
						flag = true;
					}
				}, 1000);
	        		
        	}
	        	
            break;
	 
        case KeyEvent.KEYCODE_VOLUME_UP:
            Log.i("test", "Volume Up");
            break;
        }
        return true;
}

한 번 만들어 봤는데, 잘 동작하는 같네요.ㅎㅎ

바깥쪽에 플래그 하나를 두고

1초 마다 플래그 값 조정하는 걸로 처리했습니다.

볼륨 업은 볼륨 다운 참고해서 해보셔요~

가랑비 (10,530 포인트) 님이 2015년 1월 8일 답변
누르고있을떄 중첩이 되는거 갔습니다.
숫자가 막 올라 가네요 ...
...