关于Android上X轴旋转的问题

2022-08-31 00:00:00 sensors android

我想用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。

介于%1、%2之间的状态与介于%2、%3之间的状态具有相同的旋转值。我如何判断我的电话处于哪种状态?


解决方案

请验证您的读数。

您报告的符号和范围与
完全不同步 Android设备的预期功能。

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

注意:此传感器类型是由于旧版原因而存在的,请将getRotationMatrix()与remapAssociateSystem()和getOrientation()结合使用来计算这些值。

问候
CVS@2600赫兹

相关文章