2016-06-16 8 views
1

ここに私のコードがありますが、mAccelの値は常に0です。私はmAccelの値とsensivityの値を比較したいと思います。 誰かがこの問題で私を助けることができますか?センサー加速度センサーを使ってアンドロイドで動きを検出する方法

private float mAccel; 
    private float mAccelCurrent; 
    private float mAccelLast; 
    private float[] mGravity; 
    float sensitivityLevel = 2.0f; 

private SensorManager sensorManager; 
private Sensor accel; 

    sensorManager=(SensorManager)getSystemService(SENSOR_SERVICE); 
     accel = sensorManager.getDefaultSensor(1); 

     mAccel = 0.00f; 
     mAccelCurrent = SensorManager.GRAVITY_EARTH; 
     mAccelLast = SensorManager.GRAVITY_EARTH; 
@Override 
public void onSensorChanged(SensorEvent event) { 
    if (event.sensor.getType() ==1){ 
      mGravity = event.values.clone(); 
      // Shake detection 
      float x = mGravity[0]; 
      float y = mGravity[1]; 
      float z = mGravity[2]; 
      mAccelLast = mAccelCurrent; 
      mAccelCurrent = FloatMath.sqrt(x*x + y*y + z*z); 
      float delta = mAccelCurrent - mAccelLast; 
      mAccel = mAccel * 0.9f + delta; 

     if(mAccel > sensitivityLevel){ 
      play_alarm("car alarm"); 
     } 
    } 

答えて

1

あなたはメソッドが呼び出されたかどうかを確認するためにログやデバッグを使用する必要があります

sm = (SensorManager) getSystemService(SENSOR_SERVICE); 
    if(sm.getSensorList(Sensor.TYPE_ACCELEROMETER).size()!=0){ 
     Sensor s = sm.getSensorList(Sensor.TYPE_ACCELEROMETER).get(0); 
     sm.registerListener(this,s, SensorManager.SENSOR_DELAY_NORMAL); 
    } 

リスナーを登録する必要があります。

関連する問題