Java 无法在android上将设备坐标系转换为世界坐标系
我编写了一个小代码,通过乘以旋转矩阵(使用getRotationMatrix)和矢量(Ax、Ay、Az),将设备坐标转换为世界坐标,这是加速度计的值。当我运行这个,手机是静态的,我得到一个非常波动的Z轴值(从9.3到10.3),另外两个是0。然而,当我给手机在任何方向的加速度,它仍然没有显示任何变化,这些值保持零。这是代码中获取值的部分Java 无法在android上将设备坐标系转换为世界坐标系,java,android,coordinate-systems,android-sensors,coordinate-transformation,Java,Android,Coordinate Systems,Android Sensors,Coordinate Transformation,我编写了一个小代码,通过乘以旋转矩阵(使用getRotationMatrix)和矢量(Ax、Ay、Az),将设备坐标转换为世界坐标,这是加速度计的值。当我运行这个,手机是静态的,我得到一个非常波动的Z轴值(从9.3到10.3),另外两个是0。然而,当我给手机在任何方向的加速度,它仍然没有显示任何变化,这些值保持零。这是代码中获取值的部分 if(ctp.getType()==Sensor.TYPE_ACCELEROMETER){ Ca[0]=event.value
if(ctp.getType()==Sensor.TYPE_ACCELEROMETER){
Ca[0]=event.values[0];
Ca[1]=event.values[1];
Ca[2]=event.values[2];
SensorManager.getRotationMatrix(R, I, Ca , Cm);
for(i=0;i<16;i++)
rotmat[i/4][i%4]=R[i];
fAx=0;
fAy=0;
fAz=0;
Ca[3]=0;
for(i=0;i<4;i++){
fAx+=rotmat[0][i]*Ca[i];
fAy+=rotmat[1][i]*Ca[i];
fAz+=rotmat[2][i]*Ca[i];
}
buff1.append(fAx);
x.setText(buff1.toString());
buff2.append(fAy);
y.setText(buff2.toString());
buff3.append(fAz);
z.setText(buff3.toString());
}
else if(ctp.getType()==Sensor.TYPE_MAGNETIC_FIELD){
Cm[0]=event.values[0];
Cm[1]=event.values[1];
Cm[2]=event.values[2];
}
if(ctp.getType()==Sensor.TYPE\u加速计){
Ca[0]=事件值[0];
Ca[1]=事件值[1];
Ca[2]=事件值[2];
SensorManager.getRotationMatrix(R、I、Ca、Cm);
对于(i=0;i