mic*_*ael 5 android rotational-matrices android-sensors sensormanager
我已经搜索了一段时间关于如何获得最准确的设备方位角并想出了这个:
//Activity members
private SensorManager sensorManager;
private float mAzimuth = 0.0f;
private float[] mRotation = null;
private float rMat[] = new float[16];
private float orientation[] = new float[3];
//Later inside the Activity: Rotation Listener
SensorEventListener rotationListener = new SensorEventListener() {
public void onAccuracyChanged(Sensor sensor, int accuracy) {}
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() == Sensor.TYPE_ROTATION_VECTOR) {
mRotation = event.values.clone();
if (mRotation != null) {
float RmatVector[] = new float[16];
SensorManager.getRotationMatrixFromVector(RmatVector, mRotation);
SensorManager.remapCoordinateSystem(RmatVector, SensorManager.AXIS_X, SensorManager.AXIS_Z, rMat);
SensorManager.getOrientation(rMat, orientation);
mAzimuth = (float)Math.toDegrees((double)orientation[0]); //azimuth
if (mAzimuth < 0) {
mAzimuth = 360 + mAzimuth;
}
}
mRotation = null;
}
}
};
Run Code Online (Sandbox Code Playgroud)
我试图做的:实施所有有关如何获得最准确方位角读数的最新指南:
TYPE_ORIENTATION:此传感器在 Android 2.2(API 级别 8)中已弃用。传感器框架提供了获取设备方向的替代方法,在使用方向传感器中讨论了这些方法。
问题是产生的方位角不是很准确,并且已经用几个好的设备进行了测试。
所以 - 也许我的实现中有一些软件错误?还是整个方法都错了?
谢谢,
| 归档时间: |
|
| 查看次数: |
3892 次 |
| 最近记录: |