2016-07-28 9 views
2

Я пытаюсь ударить API, когда пользователь встряхивает устройство 10 раз. Я пробовал много git простой и стек переполнение решения, но не из них могут решить мою проблему. некоторые из библиотеки Git работают, но обнаруживают дрожание до 10 раз или после 10 раз. i have tried this library
and this библиотека. пожалуйста, дайте мне ценное решение.обнаружить Shake в android

+0

Это не так просто с несколькими последовательными встрясками. Я считаю, что вам нужно определить, что такое ** встряска ** и какой ** тайм-аут ** между двумя колебаниями сам по себе, чтобы быть удовлетворенным решением. – NitroNbg

ответ

1

С помощью SensorListener

Пожалуйста, проверьте этот галочкой ответ ...

Вы должны настроить SHAKE_THRESHOLD значение для достижения этой цели

How to detect shake event with android?

Спасибо!

+0

Я уже пробовал. но не работает для меня –

+1

вставьте свой код –

0

имеет статическую переменную, которая увеличивается каждый раз при обнаружении дрожания.

static int count = 0; 
public void onSensorChanged(SensorEvent event) { 
if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) { 
    long curTime = System.currentTimeMillis(); 
    if ((curTime - mLastShakeTime) > MIN_TIME_BETWEEN_SHAKES_MILLISECS) { 

     float x = event.values[0]; 
     float y = event.values[1]; 
     float z = event.values[2]; 

     double acceleration = Math.sqrt(Math.pow(x, 2) + 
       Math.pow(y, 2) + 
       Math.pow(z, 2)) - SensorManager.GRAVITY_EARTH; 

     if (acceleration > SHAKE_THRESHOLD) { 
      mLastShakeTime = curTime; 
      count++; 
      if(count==10){ 
       //your code goes here 
      } 
     } 
    } 
}