关于Android上X轴旋转的问题

时间:2010-07-19 15:21:18

标签: android sensor

我想用Android传感器检测X轴周围的正确旋转。谷歌搜索后,我找到了这段代码:

   public void onSensorChanged(SensorEvent event) {
   Sensor sensor = event.sensor;
   switch(sensor.getType()) {
   case Sensor.TYPE_ACCELEROMETER:
    mAcc = event.values.clone();
    break;
   case Sensor.TYPE_MAGNETIC_FIELD:
    mMag = event.values.clone();
    break;
   }
   if (mAcc == null || mMag == null) return;

   float R[] = new float[9];
   if (SensorManager.getRotationMatrix(R, null, mAcc, mMag)) {
    SensorManager.getOrientation(R, mOrientation);
   }
  }

mOrientation [1]表示围绕X轴的弧度。但是,这个价值很奇怪。

  1. 当手机平放在桌面上时,它为0。
  2. 当手机的头部指向地面时,它是PI / 2.
  3. 当手机平放在桌子底部时,它再次为0。
  4. 当手机的头指向天空时,它是-PI / 2.
  5. 1,2之间的状态具有2,3之间的状态。我怎么知道我的手机在哪个状态?

1 个答案:

答案 0 :(得分:0)

请验证您的读数。

标志&您报告的范围与完全不同步 什么是Android设备上的预期。

developer.android.com/reference/android/hardware/Sensor.html#TYPE_ORIENTATION

注意:此传感器类型因遗留原因而存在,请将 getRotationMatrix() remapCoordinateSystem() getOrientation()结合使用改为计算这些值。

问候
CVS @ 2600Hertz