gpt4 book ai didi

android - 如何使用 SensorManager.getOrientation() 计算 "Pitch"和 "Roll"

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:14:25 43 4
gpt4 key购买 nike

我目前正在尝试替换我的“Sensor.TYPE_ORIENTATION”,因为它已被弃用。所以Android Documentation缺乏关于如何做的大部分信息。在 SO 上调试和挖掘时我想出了如何计算曾经由 OrientationSensor 提供的 azimuth。我是这样做的:

float accelerometerVals[] = new float[3];
float magneticVals[] = new float[3];

float orientationSensorVals[] = new float[3];

float rotationMatrix[] = new float[16];
float orientation[] = new float[3];

@Override
public void onSensorChanged(SensorEvent event) {
switch (event.sensor.getType()) {
case Sensor.TYPE_ACCELEROMETER:
System.arraycopy(event.values, 0, accelerometerVals, 0, 3);
break;
case Sensor.TYPE_MAGNETIC_FIELD:
System.arraycopy(event.values, 0, magneticVals, 0, 3);
break;
case Sensor.TYPE_ORIENTATION:
System.arraycopy(event.values, 0, orientationSensorVals, 0, 3);
break;
default:
break;
}

if (null != magneticVals && null != accelerometerVals){
SensorManager.getRotationMatrix(rotationMatrix, null, accelerometerVals, magneticVals)
SensorManager.getOrientation(rotationMatrix, orientation);
float azimuth = Math.toDegrees(orientation[0])
//this calculation gives me the Azimuth in the same format that OrientationSensor
azimuth += (azimuth >= 0) ? 0 : 360
float FALSE_PITCH = Math.toDegrees(orientation[1])
float FALSE_ROLL = Math.toDegrees(orientation[2])
}

注意变量 FALSE_PITCH && FALSE_ROLL。我不知道如何“规范化”(值从 +10 到 -10 不等)这个值,以获得与我之前在 OrientationSensor 中相同的输出

最佳答案

我遇到过同样的问题,但我很惊讶你的滚动不正确,因为它对我来说是正确的。这是我使用的:

//Let values[] be your orientation[] variable once in degrees.

// Azimuth scaling
if (values[0]<0) values[0] += 360;

// Pitch scaling
if (values[1]<-90) values[1] += (-2*(90+values[1]));
else if (values[1]>90) values[1] += (2*(90-values[1]));

// Roll scaling
// NOT NEEDED

您能否发布 Orientation 传感器和您的 degrees orientation[] 变量的一些输出?

关于android - 如何使用 SensorManager.getOrientation() 计算 "Pitch"和 "Roll",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10032374/

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