2012-08-22 13 views
8

私はSensorEventListenerを実装するクラスを持っており、私はAccelerometerを使って tilt Angle私のデバイスのtilt Angleを取得したいと思います。アンドロイド加速度計からの傾斜角度を取得

インターネットで例を探しましたが、 Sensor.TYPE_MAGNETIC_FIELDを使用しています。

私は私のデバイスは、このセンサーを持っていないと信じて、私は 次のチェック
manager.getSensorList(Sensor.TYPE_ACCELEROMETER).size()を行うとき、私はゼロを取得しているため。

Sensor.TYPE_ACCELEROMETERの値をそのまま使用してtilt Angleを取得する方法はありますか?

答えて

0

SensorManager sensorManager = (SensorManager) this.getSystemService(SENSOR_SERVICE);   

     final SensorEventListener mEventListener = new SensorEventListener() { 
      public void onAccuracyChanged(Sensor sensor, int accuracy) { 
      } 


      public void onSensorChanged(SensorEvent event) { 
       // TODO Auto-generated method stub 
       switch (event.sensor.getType()) { 
       case Sensor.TYPE_ACCELEROMETER: 
        System.arraycopy(event.values, 0, mValuesAccel, 0, 3); 
        break; 

       case Sensor.TYPE_MAGNETIC_FIELD: 
        System.arraycopy(event.values, 0, mValuesMagnet, 0, 3); 
        break; 
       } 
      }; 
     }; 

     setListners(sensorManager, mEventListener); 

SensorManager.getRotationMatrix(mRotationMatrix, null, mValuesAccel, mValuesMagnet); 
       SensorManager.getOrientation(mRotationMatrix, mValuesOrientation); 
       final CharSequence test; 
       test = ","+mValuesOrientation[0] +","+mValuesOrientation[1]+ ","+ mValuesOrientation[2]; 
+0

私は私のデバイスがSensor.TYPE_MAGNETIC_FIELDを持っていけない言ったように。 Sensor.TYPE_ACCELEROMETER値だけを使用して傾斜角を取得する方法はありますか? – user1615888

+0

センサーのみを使用してください.YPE-Accelerometer case – AndroidCrazy

+1

しかし、mValuesMagnetはnullになります。 – user1615888

0

あなたはチルト読書を取得するために加速度計を使用することができ、これを試してみてください。加速度計を設定すると、重力が含まれていることがわかります。だからあなたが電話機を表の上に置くと、z軸は9.81(重力の力)に近いところに登録され、x軸とy軸は0になります。電話機を傾けると、重力が投影されますxおよび/またはy軸上に配置する。したがって、あなたはxとyの値があなたに電話の傾きを伝えます。

関連する問題