我编写了一个代码来单独使用加速度计来获取设备的方向。但是两个角度同时变化。我的意思是平移,倾斜或倾斜滚动或滚动平移,其中任何两个角度几乎相同地变化每个方向。为什么会这样?
public void onSensorChanged(SensorEvent event) {
switch (event.sensor.getType()) {
case Sensor.TYPE_ACCELEROMETER:
System.arraycopy(event.values, 0, mGravs, 0, 3);
break;
default:
return;
}
X=mGravs[0];
Y=mGravs[1];
Z=mGravs[2];
if(i==1){
R=Math.sqrt(X*X+Y*Y+Z*Z);
pan1=Math.round((180/Math.PI)*Math.acos(X/R)) ;
tilt1=Math.round((180/Math.PI)*Math.acos(Y/R)) ;
roll1=Math.round((180/Math.PI)*Math.acos(Z/R));
i=0;
}
else{
R=Math.sqrt(X*X+Y*Y+Z*Z);
pan=Math.round((180/Math.PI)*Math.acos(X/R))-pan1;
tilt=Math.round((180/Math.PI)*Math.acos(Y/R))-tilt1;
roll=Math.round((180/Math.PI)*Math.acos(Z/R))-roll1;
text.setText("Angle X" +pan+"\nAngle Y" +tilt+"\nAngle Z" +roll);
}
}