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

안드로이드 볼륨키 관련 질문

0 추천

볼륨 업키 혹은 다운키를 누르고 있으면 count 가 0에서  매 1초마다 1씩증가 하다고

키에서 손을때면 증가하는게 멈추게 하고 싶은데 생각처럼 잘되지 않습니다.

누르고있을때마다 ACTION_DOWN이 실행 되다보니  onHandler1();을  탈떄마다 1초에 수십초씩 증가되네요(중첩현상) ;; 해결방안을 찾고 싶은데 계속 헛수고입니다 ....

 

 

 

package com.example.touchcountexample;
 
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.widget.TextView;
 
public class MainActivity extends Activity {
 
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 (event.getAction() == MotionEvent.ACTION_DOWN) {
onHandler1();
 
 
 
}
 
if (event.getAction() == MotionEvent.ACTION_UP) {
 
mHandler.removeCallbacks(r);
 
}
 
break;
 
case KeyEvent.KEYCODE_VOLUME_UP:
Log.i("test", "Volume Up");
break;
}
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);
}
}
 
리뷰즈 (480 포인트) 님이 2015년 3월 21일 질문

1개의 답변

0 추천

mHandler.postDelayed

로 하시지말구 이전에 눌러진 시간과 현재 눌러진 시간 차이를 구한후에

그 시간차이가 몇 ms 안에 들어온것은 무시하면 될거같은데요

 

-------------

doridori2013@nate.com

익명사용자 님이 2015년 3월 21일 답변
...