gpt4 book ai didi

Android:计算设备方向的问题

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

我正在尝试构建一个简单的增强现实应用程序,因此我开始使用传感器数据。

根据此线程(Android compass example)和示例(http://www.codingforandroid.com/2011/01/using-orientation-sensors-simple.html),使用Sensor.TYPE_ACCELEROMETERSensor.TYPE_MAGNETIC_FIELD 计算方向不会真的很合身。

所以我无法获得“好的”值。方位角值根本没有任何意义,所以如果我只是将手机向上移动,值就会发生极大的变化。即使我只是旋转手机,这些值也不代表手机的方向。

有没有人知道,根据给定的例子,谁可以提高值(value)质量?

最佳答案

您在哪种方向上使用此示例应用程序?从这段代码所写的来看,唯一支持的方向是 table 上的纵向或平面,这取决于设备。 “好”是什么意思?

旋转设备时该值不“好”是正常的,设备坐标系应该工作在纵向,或者我不知道的平面(Y 轴沿屏幕垂直向上,Z 轴从屏幕中心指向屏幕外,X 轴垂直于沿屏幕右侧的 Y 轴)。有了这个,旋转设备不会旋转设备坐标系,你必须重新映射它。

但是,如果您想要纵向方向的设备标题,这里有一段代码适合我:

@Override
public void onSensorChanged(SensorEvent event)
{
// It is good practice to check that we received the proper sensor event
if (event.sensor.getType() == Sensor.TYPE_ROTATION_VECTOR)
{
// Convert the rotation-vector to a 4x4 matrix.
SensorManager.getRotationMatrixFromVector(mRotationMatrix,
event.values);
SensorManager
.remapCoordinateSystem(mRotationMatrix,
SensorManager.AXIS_X, SensorManager.AXIS_Z,
mRotationMatrix);
SensorManager.getOrientation(mRotationMatrix, orientationVals);

// Optionally convert the result from radians to degrees
orientationVals[0] = (float) Math.toDegrees(orientationVals[0]);
orientationVals[1] = (float) Math.toDegrees(orientationVals[1]);
orientationVals[2] = (float) Math.toDegrees(orientationVals[2]);

tv.setText(" Yaw: " + orientationVals[0] + "\n Pitch: "
+ orientationVals[1] + "\n Roll (not used): "
+ orientationVals[2]);

}
}

您将在以下位置获得航向(或方位角):

orientationVals[0]

关于Android:计算设备方向的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14740808/

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