Android getOrientation说明与输出值不匹配

时间:2018-06-22 22:35:36

标签: android android-sensors

Android getOrientation()函数表示:

  • 索引0处的值:方位角在pi和-pi之间
  • 索引1处的值:螺距在pi和-pi之间
  • 索引2处的值:滚动在-pi / 2和pi / 2之间

但是,在使用模拟器(Nexus 5 API 25)/设备(Samsung API 21)进行测试时,我得到了不同的值范围。我使用Logcat打印值。我得到的音高值是从-pi / 2到pi / 2。屏幕指向天空时,值的范围是0到-pi / 2,屏幕指向地面时,值的范围是0到pi / 2。 滚动超过pi / 2。

为什么我得到的价值不同于本文档?

我的代码如下:

public void onSensorChanged(SensorEvent event) {
    if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
        System.arraycopy(event.values, 0, mAccelerometerReading,
                0, mAccelerometerReading.length);
    }
    else if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD) {
        System.arraycopy(event.values, 0, mMagnetometerReading,
                0, mMagnetometerReading.length);
    }

    if (mAccelerometerReading != null && mMagnetometerReading != null) {
        // Update rotation matrix, which is needed to update orientation angles.
        mSensorManager.getRotationMatrix(mRotationMatrix, null,
                mAccelerometerReading, mMagnetometerReading);


        mSensorManager.getOrientation(mRotationMatrix, mOrientationAngles);

        Log.d("sensor", Float.toString(mOrientationAngles[1]));
    }

1 个答案:

答案 0 :(得分:1)

请仅与真实设备进行比较(首选),因为某些模拟器提供的值与预期值不同 在这里,我附上一份参考资料。

Reference 1

Reference 2

您要做的是:-

  1. 创建演示应用程序,该应用程序将打印此音高并滚动,然后进行比较。