作业帮 > 综合 > 作业

Android 加速度传感器 怎么转换成角度 我得到 了加速度的传感器的三个数值,并且也让它通过句柄显示到了显示屏上,但

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/11/08 00:41:56
Android 加速度传感器 怎么转换成角度 我得到 了加速度的传感器的三个数值,并且也让它通过句柄显示到了显示屏上,但是现在我想用这三个数值求得设备与水平或垂直的夹角,怎么得到?,有没有高手教教?我也是初接触安卓传感器.或者一起讨论讨论?
sm = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
aSensor = sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
mSensor = sm.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
sm.registerListener(myListener,aSensor,SensorManager.SENSOR_DELAY_NORMAL);
sm.registerListener(myListener,mSensor,SensorManager.SENSOR_DELAY_NORMAL);
SensorEventListener myListener =new SensorEventListener() {
publicvoid onSensorChanged(SensorEvent sensorEvent) {
if (sensorEvent.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD)
magneticFieldValues = sensorEvent.values;
if (sensorEvent.sensor.getType() == Sensor.TYPE_ACCELEROMETER)
accelerometerValues = sensorEvent.values;
float[] values =newfloat[3];
float[] R = newfloat[9];
SensorManager.getRotationMatrix(R,null,accelerometerValues,magneticFieldValues);
SensorManager.getOrientation(R,values);
//这里 values[0],values[1],values[2]里边的数据就是x y z 轴 分别的角度
}
publicvoid onAccuracyChanged(Sensor sensor,int accuracy) {}
};
再问: 你好,我按照您的方法,得到了三个数值,然后意识到这好像是没有经过换算的,然后我将每个数值都乘以180再除以π,得到了现在的数值,设备平放的时候Y和Z是0,X在-180到180,也就是当平放的时候可以用X偏向得到磁场指向,做到这里似乎没有问题了,但是我后来将地磁的三个数值一同输出到界面,发现X的地磁的数值居然有负数,还有的大于10,都20多了?地磁不是0-10么?这个,可以解释解释我听么?或者我的地磁传感器坏了?
再答: 没地方说过这个应该是0-10啊,这里的数字代表各方向的磁场分量,单位为微特斯拉,物理上的事,咱就别管了。