我编写了一个小代码,通过将旋转矩阵(使用getRotationMatrix)和作为加速度计值的矢量(Ax,Ay,Az)相乘,将设备坐标转换为世界坐标。当我运行这个,并且手机是静止的时,我得到一个非常波动的Z轴值(从9.3到10.3),另外两个是0.但是当我给手机任何方向加速时,它仍然没有t显示对这些值的任何更改,它们保持为零。这是我得到值的代码的一部分。
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];
}
另外我想知道基于方向传感器获取旋转矩阵是否更好或者使用内置的getRotationMatrix?