2012-08-22 154 views
8

我有一個類實現了SensorEventListener,我想要 tilt Angle我的設備使用Accelerometer從android加速度計獲取傾斜角

我在網上尋找例子,但他們使用 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

然後只使用Sensor.TYPE-Accelerometer案例 – AndroidCrazy

+1

但是然後mValuesMagnet將是空的,它不能。 – user1615888

0

您可以使用加速計來獲得傾斜讀數。如果你設置了一個加速度計,你會發現它包含了重力。因此,如果您的手機在桌面上正面朝上,則z軸將在接近9.81(重力)的位置註冊,x軸和y軸將位於0.當您傾斜手機時,重力將被投影到x和/或y軸上。因此,您的x和y值會告訴您手機的傾斜。