안드로이드 개발 질문/답변
(글 수 45,052)
private class accListener implements SensorEventListener{
@Override
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
long currentTime = System.currentTimeMillis();
long gabOfTime = (currentTime - lastTime);
if (gabOfTime > 70) {
lastTime = currentTime;
x = event.values[SensorManager.DATA_X];
y = event.values[SensorManager.DATA_Y];
z = event.values[SensorManager.DATA_Z];
speed = Math.abs(x + y + z - lastX - lastY - lastZ) /
gabOfTime * 10000;
if (speed > SHAKE_THRESHOLD) {
// 이벤트 발생!!
vibe.vibrate(100);
count++;
if(count>3 && count<=6){
count-=3;
}if(count>6){
count=0;
}
shake.setText(count+"번");
startHandler(count);
}
lastX = event.values[DATA_X];
lastY = event.values[DATA_Y];
lastZ = event.values[DATA_Z];
}
}
}
private void startHandler(final int ct) {
Handler startHandler = new Handler();
startHandler.postDelayed(new Runnable() {
public void run() {
if(ct==count){
Toast.makeText(shake.this, count+"번 감지", Toast.LENGTH_SHORT).show();
count=0;
shake.setText("0");
}
}
}, 1500);
}
몇번 질문드렸는데 답글이 없어서..ㅜㅜㅜㅜㅜ
단말기를 흔들어서 정확하게 1번, 2번, 3번을 감지해야되는데
정확하게 감지가 안되서요,
핸들러 사용해서 더이상 움직임이 없을경우 몇번 감지되었다는 토스트메시지를 띄우는 방식이구요.
1번, 2번, 3번을 정확하게 잡아내야 하는데
고수님들 제발 도와주세요 제발제발 ...
아! 혹시 이 어플이 이해가 안가시는 분은 "ShakeRun"이라는 어플리케이션 참조하시면 될거에요..
http://blog.naver.com/painhouse?Redirect=Log&logNo=70112100820




count가 제대로 안늘어나는거라면 threshold를 조정해야 할것 같고...
count는 문제가 없다면, 핸들링 방식을 수정해야 될것 같네요.
마지막 counting후 일정 시간동안 count가 증가하지 않는다면 작업종료...라는 시나리오일텐데요
timer로 구현하는게 맞아 보입니다.
플래그 하나 두고 기다리는 중...일때만 처리하게...