我正在读取手机的方向值,方位角和滚动数据非常好,因为它们是-180到180,但是我的音高有问题,因为只有当我从0旋转手机时它是-90到90学位到360度。
SensorManager.getRotationMatrixFromVector(mRotationMatrix, event.values);
SensorManager.getOrientation(mRotationMatrix, orientationVals);
float azimuth = (float)Math.toDegrees(orientationVals[0]);
float pitch = (float)Math.toDegrees(orientationVals[1]);
float roll = (float)Math.toDegrees(orientationVals[2]);
float deltaX = Math.abs(mLastOrientation[0] - azimuth);
float deltaY = Math.abs(mLastOrientation[1] - pitch);
float deltaZ = Math.abs(mLastOrientation[2] - roll);
if (deltaX < ORIENTATIONNOISE) azimuth = mLastOrientation[0];
if (deltaY < ORIENTATIONNOISE) pitch = mLastOrientation[1];
if (deltaZ < ORIENTATIONNOISE) roll = mLastOrientation[2];
mLastOrientation[0] = azimuth;
mLastOrientation[1] = pitch;
mLastOrientation[2] = roll;
任何人都可以提供帮助。感谢
答案 0 :(得分:1)
这让我感到很正常。如果你考虑一下,音高基本上是设备坐标的纬度,纬度不能超过90度 - 在那个点(也就是北极和南极),它会环绕并开始再次减小。