我是 Android 的新手,我想根据我的相机获取方向。如何根据我的相机获取方向信息?你能给出一个想法吗?
最佳答案
TYPE_ORIENTATION 已弃用
我们不能再使用方向传感器了,我们可以串联使用磁场传感器和加速计传感器来获得等效的功能。这需要更多工作,但它确实允许继续使用回调来处理方向更改。
从加速度计和磁场到方位角的转换:
float[] mGravity;
float[] mGeomagnetic;
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER)
mGravity = event.values;
if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD)
mGeomagnetic = event.values;
if (mGravity != null && mGeomagnetic != null) {
float R[] = new float[9];
float I[] = new float[9];
if (SensorManager.getRotationMatrix(R, I, mGravity, mGeomagnetic)) {
// orientation contains azimut, pitch and roll
float orientation[] = new float[3];
SensorManager.getOrientation(R, orientation);
azimut = orientation[0];
}
}
}
要指向北方,您可以计算以度为单位的旋转:
float rotation = -azimut * 360 / (2 * 3.14159f);
关于android - Android中如何获取方向(如北、西),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8315913/