如果这是一个非常基本的问题,我真的很抱歉,但我没有选择,只能问:如何将加速度计数据从设备坐标转换为真实世界坐标?
我的意思是,假设加速度计让我像(Ax,Ay,Az)那样在设备的坐标中,我应该应用什么样的变换来将值转换成(Ax',Ay',Az') - 在现实世界的坐标中 - ,所以我可以使用真实世界坐标中的加速度矢量来计算设备是在加速北,东,西南等?
过去几天我一直在解决这个问题.起初我认为这很难,但在搜索了几十页后,我还没有提出任何功能.
顺便说一句,这里有一些代码,我到目前为止已经实现了:
private SensorEventListener mSensorEventListener = new SensorEventListener() {
public void onAccuracyChanged(Sensor sensor, int accuracy){
}
public void onSensorChanged(SensorEvent event) {
switch(event.sensor.getType()){
case Sensor.TYPE_ACCELEROMETER:
accelerometervalues = event.values.clone();
AX.setText(accelerometervalues[0]+"");
AY.setText(accelerometervalues[1]+"");
AZ.setText(accelerometervalues[2]+"");
break;
case Sensor.TYPE_ORIENTATION:
orientationvalues = event.values.clone();
azimuth.setText(orientationvalues[0]+"");
pitch.setText(orientationvalues[1]+"");
roll.setText(orientationvalues[2]+"");
break;
case Sensor.TYPE_MAGNETIC_FIELD:
geomagneticmatrix =event.values.clone();
TAX.setText(geomagneticmatrix[0]+"");
TAY.setText(geomagneticmatrix[1]+"");
TAZ.setText(geomagneticmatrix[2]+"");
break;
}
if (geomagneticmatrix != null && accelerometervalues != null) {
float[] R = new float[16];
float[] I = new float[16];
SensorManager.getRotationMatrix(R, I, accelerometervalues, geomagneticmatrix); …Run Code Online (Sandbox Code Playgroud)