2013-01-18 3 views
2

왼쪽, 오른쪽, 위아래 떨림을 감지하려고합니다. 나는이 코드를 연구하고 발견했다.가속도계 떨림 감지 android

public void onSensorChanged(SensorEvent event) { 
      // TODO Auto-generated method stub 

      if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) { 

       float[] values = event.values; 

       // Movement 
       float x = values[0]; 
       float y = values[1]; 
       float z = values[2]; 


       long actualTime = System.currentTimeMillis(); 
       if ((actualTime - lastUpdate) > 100) 
       { 
        long diffTime = (actualTime - lastUpdate); 
        lastUpdate = actualTime; 


        if(Round(x,4)>8.0000){ 
         Log.d("sensor", "=====LEFT===="); 


        } 
        else if(Round(x,4)<-8.0000){ 
         Log.d("sensor", "=====RIGHT===="); 

        } 
        else if(Round(z,4) < -0.0){ 
         Log.d("sensor", "=====UP===="); 


        } 

        else if(Round(y,4) < 1.0){ 
         Log.d("sensor", "=====DOWN===="); 

        } 

       float speed = Math.abs(x+y+z - last_x - last_y - last_z)/diffTime * 10000; 

       if (speed > SHAKE_THRESHOLD) { 
        //Log.d("sensor", "shake detected w/ speed: " + speed); 
        //Toast.makeText(this, "shake detected w/ speed: " + speed, Toast.LENGTH_SHORT).show(); 
       } 
       last_x = x; 
       last_y = y; 
       last_z = z; 
       } 
      } 

     } 

나는 그것을 연구하려고했지만 몇 가지 질문이 있습니다.
1. 흔들림 감지 후 어디에서 지연을 설정할 수 있습니까? 마지막으로 감지 된 쉐이크 중 1 초 후에 쉐이크를 감지하고 싶습니다.
2. 평평한 표면에 놓으면 항상 아래쪽을 감지합니다.
3. 올바른 움직임을 감지 할 수 없습니다.

모든 도움과 제안을 부탁드립니다.

답변

0

먼저이 코드는 떨리는 것보다는 흔들리는 것 (움직이는대로 흔들리는 것을 이해하고 반대 방향으로 움직이는 동작으로 인식)이 작동하는 것을 이해하는 방법에 문제를 일으킬 수 있습니다.

흔들림 감지 후 어디에서 지연을 설정할 수 있습니까? 마지막으로 감지 된 쉐이크 중 1 초 후에 쉐이크를 감지하고 싶습니다. 탐지 사이의 간격이 발생하는 위치

if ((actualTime - lastUpdate) > 100)

입니다 - 여기에 (100)는 1 초 원한다면, 1000

이유로 변경할 수 있도록 만 변경이 100 밀리 후에 무엇인지 확인하기 위해 프로그램을 알려줍니다 만약 내가 그것을 평평한 표면에 놓는다면, 그것은 항상 아래를 감지합니다.

분명하지는 않지만 여기에는 상황과 방향이 확실하지 않지만, 생각해 보니 '아래'라는 것을 잊지 마세요.하지만 전화에서 볼 수는 있지만, 전화기가 똑바로 세워져있을 때 아래로 내려갑니다. 휴대 전화가 켜져 있으면 왼쪽과 오른쪽이 동일하지만 휴대 전화 뒤쪽을 향해 내려 가면서 센서쪽으로 돌아옵니다.

  1. 나는 권리 운동이 코드는 여기에 잘 보이는 이유는, TBH 내가 아무 생각도 없어

를 흔들 감지 할 수 없습니다. 전화 일 수도 있고, 구현 문제 일 수도 있습니다. (위의 코드는 돌아 오는 '쉐이크'가 아니라 전체적으로 움직이는 코드입니다. 따라서이 문제를 테스트하기 위해 올바르게 흔들 수있는 방법 일 수 있습니다. 하지만 왼쪽으로 쉐이크가 실행되고 있습니다.

+0

이 코드는 내 앱에 적합합니다. 평평한 표면에 놓을 때 움직임을 막을 수있는 해결책을 제안 할 수 있습니까? 올바른 움직임으로 인해 두통이 생깁니다. . – ljpv14