如何获得GPS手机的摄像头方向?

时间:2011-04-27 06:38:23

标签: android gps augmented-reality

我发现GPS的全部内容是它只是告诉设备的位置,如何获得相机指向的方向,角度和设备的高度?如何使用支持GPS的手机制作指南针(2D,3D)?

手机中是否有内置的2D,3D指南针,或者仅通过GPS完成?

2 个答案:

答案 0 :(得分:5)

我是这样做的:

1 - 使用加速度和磁力削减器获得加速度和磁力值。

2 - 将这些值转换为方向:

    private float[] rMatrix = new float[9]; 
    private float[] outR = new float[9];

    SensorManager.getRotationMatrix(rMatrix, null, accelerometerValues, magneticValues);
    SensorManager.remapCoordinateSystem(rMatrix, SensorManager.AXIS_X, SensorManager.AXIS_Z, outR);
    SensorManager.getOrientation(outR, orientationValues);

这里的accelerometerValues和magneticValues浮动[3]数组,你根据听众初始化

3 - orientationValues [0]和orientationValues [1]值是水平和垂直角度。

答案 1 :(得分:3)

Maxims方法有效但传感器在大多数手机上都很嘈杂,你需要通过某种类型的滤波器(低通或kahlman)传递传感器的值,否则数字会快速“跳”到几乎无法使用

outR将以弧度为单位,因此您需要更改为度数:

Math.toDegrees(values[0]); // for 0, 1, 2 (Azimuth, Pitch, Roll)

必须调整方位角(values[0]),因为它返回180到-180,所以类似:

if (values[0] < 0) values[0] = 360 + values[0]; // Translate from - to positive azimuth