Android Sensor.TYPE_ORIENTATION运行完美,我无法通过加速度计和磁力计获得相同的结果

时间:2012-07-31 15:56:59

标签: android android-sensors

我正在尝试使用此不推荐使用的代码版本来获取方向。但是我无法让它像平滑和完美一样工作,就好像我只是使用已弃用的Sensor.TYPE_ORIENTATION。我错过了什么吗?

// OLD

@Override
public void onSensorChanged(SensorEvent arg0) {
    m_lastYaw = arg0.values[0];
    invalidate();
}

// NEW

@Override
public void onSensorChanged(SensorEvent event) {
    if (event.accuracy == SensorManager.SENSOR_STATUS_UNRELIABLE){
        return;
    }

    if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
        System.arraycopy(event.values, 0, m_lastAccels, 0, 3);
    }
    if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD) {
        System.arraycopy(event.values, 0, m_lastMagFields, 0, 3);
    }

    if (SensorManager.getRotationMatrix(m_rotationMatrix, null, m_lastAccels, m_lastMagFields)) {
        SensorManager.getOrientation(m_rotationMatrix, m_orientation); 

        m_lastYaw = (float)Math.toDegrees(m_orientation[0]);
        invalidate();
    }
}

1 个答案:

答案 0 :(得分:0)

我使用了我提出的代码here,只有当手机(三星Galaxy S3)平放时才能正常工作。但这是一个开始:它不会比Sensor.TYPE_ORIENTATION更好,也不会更糟。