2012-04-06 5 views
1

Ich verwende einen Beschleunigungssensor in meiner Anwendung und ich frage mich, ob ich es so machen kann, dass der Beschleunigungssensor nur für eine bestimmte Zeit aktiviert wird, nachdem der Benutzer einen Startknopf gedrückt hat. Es sollte aufhören, wenn der Benutzer die Stopp-Taste drückt. Es wird im Wesentlichen als ein Schrittzähler funktionieren, der Teil einer größeren Anwendung ist. Dies ist der Code verwendet, um das Beschleunigungsmesser zu implementieren: -Android Accelerometer-Setup: Kann ich es nur ausführen, wenn die Taste gedrückt wird.

SensorManager sensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE); 
    int sensorType = Sensor.TYPE_ACCELEROMETER; 
    sensorManager.registerListener(sensorListener, sensorManager.getDefaultSensor(sensorType),SensorManager.SENSOR_DELAY_NORMAL); 

Ich habe den Code, um die Schritte zu zählen, die: -

final SensorEventListener sensorListener = new SensorEventListener() 
{ 

    public void onSensorChanged(SensorEvent event) 
    { 
      if(event.values[2]<3) 
      { 
       counter ++; 
      } 
      else if(event.values[2]>5) 
      { 
       counter --; 
       counter ++; 

      } 
      sensorData.setText("Steps = "+ counter); 

     } 

     public void onAccuracyChanged(Sensor sensor, int accuracy){} 
     }; 

Ich frage mich nur, dass da ich zähle die Schritte in Die onSensorChanged-Methode Wie beschränke ich dies nur auf einen Knopfdruckzustand? Wäre es möglich, einen Timer hinzuzufügen, um zu zählen, wie lange zwischen den beiden zuvor erwähnten Tasten gedrückt wurde?

Antwort

1

Ja, natürlich.

Manager vorbereiten:

mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); 
mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); 

Beschleunigungs-Start:

mSensorManager.registerListener(this, mAccelerometer, 
    SensorManager.SENSOR_DELAY_NORMAL); 

Haltestelle:

mSensorManager.unregisterListener(this); 

Vergessen Sie nicht austragen Zuhörer in onPause() -Methode.

+0

ahh ich sehe so der Startbeschleunigungsmesser würde im Onclick für meinen Startknopf gehen und der Stop würde in den Stop gehen. habe irgendwelche Ideen, was ich damit tun könnte, um die Sitzung zu terminieren? –

+0

Sie möchten Zeit zwischen Start und Stopp haben? Verwenden Sie System.currentTimeMillis(). – Silver