2

この非推奨ではないバージョンのコードを使用して、方向性を取得しようとしています。ただし、非推奨のSensor.TYPE_ORIENTATIONを使用する場合と同じように、スムーズで完璧に動作させることはできません。私は何かが足りないのですか?

//年

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

//新着

@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();
    }
}
4

1 に答える 1

0

ここで提示したコードを使用しましたが、電話 (Samsung Galaxy S3) が平らに置かれた場合にのみうまく機能しました。しかし、それは始まりです。うまくいくことSensor.TYPE_ORIENTATIONも悪いこともありません。

于 2013-12-30T22:09:55.327 に答える