2016-07-28 28 views
2

Ich versuche, eine API zu treffen, wenn Benutzer ein Gerät 10-mal schütteln. Ich habe viele git einfache und Stapelüberlauflösung versucht, aber nicht von ihnen kann mein Problem lösen. Ein Teil der Git-Bibliothek funktioniert, erkennt aber Shake vor 10 oder nach 10 Mal. i have tried this library
and this Bibliothek. Bitte geben Sie mir eine wertvolle Lösung.erkennen Shake in Android

+0

Es ist nicht so einfach mit mehreren aufeinander folgenden Shakes. Ich glaube, du musst definieren, was ein ** Shake ** ist und was die ** Timeout ** zwischen zwei Shakes ist, um mit der Lösung zufrieden zu sein – NitroNbg

Antwort

1

von SensorListener Mit

Bitte überprüfen Sie diese tickte Antwort ...

Sie haben SHAKE_THRESHOLD Wert einzustellen diese

How to detect shake event with android?

Danke zu erreichen!

+0

Ich habe es bereits versucht. aber funktioniert nicht für mich –

+1

Bitte fügen Sie Ihren Code ein –

0

haben eine statische Variable, die jedes Mal erhöht wird, wenn ein Shake erkannt wird.

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 
      } 
     } 
    } 
}