gpt4 book ai didi

java - 在 Android 2.1 中使用 getRotationMatrix 和 getOrientation

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:07:29 24 4
gpt4 key购买 nike

这个问题困扰我太久了。此代码应输出加速度计的 dx、dy、dz,以及 dx 的运行总和。它还应输出方位角、俯仰角和横滚角。

I've used the information given here ,但无济于事。

此代码无法正确输出俯仰角、方位角或横滚角。它分别为最后三个 TextView 输出 0.0、-0.0、-0.0。

switch (event.sensor.getType()) {
case Sensor.TYPE_ACCELEROMETER:
accelerometerValues = event.values.clone();
case Sensor.TYPE_MAGNETIC_FIELD:
geomagneticMatrix = event.values.clone();
sensorReady = true;
break;
default:
break;
}

if (geomagneticMatrix != null && accelerometerValues != null && sensorReady) {
sensorReady = false;

float[] R = new float[16];
float[] I = new float[16];

SensorManager.getRotationMatrix(R, I, accelerometerValues, geomagneticMatrix);

float[] actual_orientation = new float[3];
SensorManager.getOrientation(R, actual_orientation);

tvXCoordinate.setText(accelerometerValues[0] + "");
tvYCoordinate.setText(accelerometerValues[1] + "");
tvZCoordinate.setText(accelerometerValues[2] + "");

floatXTotal += accelerometerValues[0];
tvXTotal.setText(floatXTotal + "");

tvAzimuth.setText(actual_orientation[0] + "");
tvPitch.setText(actual_orientation[1] + "");
tvRoll.setText(actual_orientation[2] + "");
}

最佳答案

我可能遗漏了一些东西(你可能已经解决了这个问题),但在我看来你的 switch 语句不正确:

switch (event.sensor.getType()) {
case Sensor.TYPE_ACCELEROMETER:
accelerometerValues = event.values.clone();
case Sensor.TYPE_MAGNETIC_FIELD:
geomagneticMatrix = event.values.clone();
sensorReady = true;
break;
default:
break;
}

如果您的传感器事件是 TYPE_ACCELEROMETER,则事件的值将被克隆到 accelerometerValuesgeomagneticMatrix 以及 sensorReady 将被设置为 true。我认为您可能需要更改此 block 的顺序,或者可能在第一个案例之后添加 break;

关于java - 在 Android 2.1 中使用 getRotationMatrix 和 getOrientation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2963705/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com