2012-04-12 10 views
0

Ich möchte für ca. sammeln. 5 Sekunden die Werte des Beschleunigungsmessers. Was ist ein geeigneter Weg, dies zu tun?Android: Wie kann man Sensorwerte für einen bestimmten Zeitraum sammeln?

Ich versuchte es, indem ich eine AsyncTask implementierte, die sich am Sensor-Manager für den Beschleunigungsmesser anmeldet und die Registrierung aufhebt und dann für 5 Sekunden schläft. Aber während dieser 5s des Schlafens die onSensorChanged Methode wird nicht aufgerufen: D ...

Die Motivation hinter meinem gesucht ist das folgende: Um meinen Beschleunigungsmesser zu kalibrieren, möchte ich für einige Sekunden Sensorwerte sammeln (während der Telefon liegt auf dem Boden) und dann die Verzerrung durch Berechnung der Mittelwerte erhalten ...

Ich schätze jeden Hinweis!

Antwort

3

Angenommen, Sie beginnen Ihre Sensoren in onResume:

/** 
* start sensors 
*/ 
public void onResume() { 
    mSensorManager.registerListener(mListener, mSensorAcceleration, SensorManager.SENSOR_DELAY_GAME); 
    mSensorManager.registerListener(mListener, mSensorMagnetic, SensorManager.SENSOR_DELAY_GAME); 
    Handler h = new Handler(); 
    h.postDelayed(new Runnable() { 

     @Override 
     public void run() { 
     // do stuff with sensor values 
      mSensorManager.unregisterListener(mListener);    
     } 
    }, 5000); 
... 
+0

funktioniert perfekt für mich! Danke vielmals – user1086105