Java 向前投还是向后投?类型\旋转\向量
我正试图从Sensor.TYPE_ROTATION_VECTOR获取基音,但我不知道如何解释结果 无论手机向前或向后倾斜,俯仰值似乎都是相同的(向前=手机顶部远离用户面部,手机底部靠近用户面部) 图像中的线条表示从侧面观看并倾斜到不同角度的手机。顶部/中部手机与地面垂直 我需要一个类似于方位角的值(从-180到+180,不重复)Java 向前投还是向后投?类型\旋转\向量,java,android,rotation,android-sensors,pitch,Java,Android,Rotation,Android Sensors,Pitch,我正试图从Sensor.TYPE_ROTATION_VECTOR获取基音,但我不知道如何解释结果 无论手机向前或向后倾斜,俯仰值似乎都是相同的(向前=手机顶部远离用户面部,手机底部靠近用户面部) 图像中的线条表示从侧面观看并倾斜到不同角度的手机。顶部/中部手机与地面垂直 我需要一个类似于方位角的值(从-180到+180,不重复) 我最后添加了另一个加速计类型的传感器侦听器。 我正在检查值[2]是否为正值,并根据结果计算出0到360之间的螺距(从12点开始顺时针方向)。 它工作正常,但它跳过了35
我最后添加了另一个加速计类型的传感器侦听器。 我正在检查值[2]是否为正值,并根据结果计算出0到360之间的螺距(从12点开始顺时针方向)。 它工作正常,但它跳过了355-5和175-185之间的一些数字。 如果您有更好的解决方案,请告诉我 来自Android文档: 值[2]:Z轴周围的角速度(不带漂移补偿),单位为rad/s
@Override
public void onSensorChanged(SensorEvent sensorEvent) {
if (sensorEvent.sensor.getType() == Sensor.TYPE_ROTATION_VECTOR) {
SensorManager.getRotationMatrixFromVector(rMat, sensorEvent.values);
SensorManager.getOrientation(rMat, orientation);
pitch = (int) (Math.toDegrees(orientation[1]) ) ;
boolean isPositive = true;
@Override
public void onSensorChanged(SensorEvent sensorEvent) {
if (sensorEvent.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
isPositive = sensorEvent.values[2] > 0;
}
if (sensorEvent.sensor.getType() == Sensor.TYPE_ROTATION_VECTOR) {
SensorManager.getRotationMatrixFromVector(rMat, sensorEvent.values);
SensorManager.getOrientation(rMat, orientation);
pitch = (int) (Math.toDegrees(orientation[1]) ) ;
if(isPositive) //between 6 and 12 o'clock
pitch = 270 - pitch;
else //between 12 and 6 o'clock
pitch = 90 + pitch;
//...