Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 向前投还是向后投?类型\旋转\向量_Java_Android_Rotation_Android Sensors_Pitch - Fatal编程技术网

Java 向前投还是向后投?类型\旋转\向量

Java 向前投还是向后投?类型\旋转\向量,java,android,rotation,android-sensors,pitch,Java,Android,Rotation,Android Sensors,Pitch,我正试图从Sensor.TYPE_ROTATION_VECTOR获取基音,但我不知道如何解释结果 无论手机向前或向后倾斜,俯仰值似乎都是相同的(向前=手机顶部远离用户面部,手机底部靠近用户面部) 图像中的线条表示从侧面观看并倾斜到不同角度的手机。顶部/中部手机与地面垂直 我需要一个类似于方位角的值(从-180到+180,不重复) 我最后添加了另一个加速计类型的传感器侦听器。 我正在检查值[2]是否为正值,并根据结果计算出0到360之间的螺距(从12点开始顺时针方向)。 它工作正常,但它跳过了35

我正试图从Sensor.TYPE_ROTATION_VECTOR获取基音,但我不知道如何解释结果

无论手机向前或向后倾斜,俯仰值似乎都是相同的(向前=手机顶部远离用户面部,手机底部靠近用户面部)

图像中的线条表示从侧面观看并倾斜到不同角度的手机。顶部/中部手机与地面垂直

我需要一个类似于方位角的值(从-180到+180,不重复)


我最后添加了另一个加速计类型的传感器侦听器。 我正在检查值[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;
  //...