2012-01-04 114 views
10

我正在寻找适用于Android的指南针示例。我需要做的就是获得正确的方位(纵向&横向模式)。Android指南针示例

我已经找到几个样品,有些只使用Sensor.TYPE_ORIENTATION,有些使用的组合为Sensor.TYPE_ACCELEROMETER & Sensor.TYPE_MAGNETIC_FIELD

这是获得我们说的Android 1.6轴承正确&常用的方法 - 4.0吗?

回答

19

Sensor.TYPE_ORIENTATION已被弃用。

文档说,你应该使用SensorManager.getOrientation()代替。

所以,你应该从Sensor.TYPE_ACCELEROMETER以及来自Sensor.TYPE_MAGNETIC_FIELD读,然后调用SensorManager.getRotationMatrix()最后SensorManager.getOrientation()将返回你的电话的朝向。

从那里,如果你看到这个图是微不足道拿到手机的方向。这可能是你的第二个例子,但我不知道,因为你没有告诉我它是什么。

+4

对不起,我忘了附上的例子:http://www.codingforandroid.com/2011/01/using-orientation-sensors-simple.html所以这是一个正确的方法是什么? – nr1 2012-01-04 21:31:54

+0

是的,那个链接中的东西看起来是正确的 – Dan 2012-01-04 21:39:47

+0

显然你如何使用数据取决于你,'onSensorChanged'是有趣的数学。 – Dan 2012-01-04 21:40:30

0

使用Sensor.TYPE_ACCELEROMETERSensor.TYPE_MAGNETIC_FIELDSensorManager.getOrientation()方法的组合不会给出精确的值。已弃用的方法Sensor.TYPE_ORIENTATION运行良好。 :)

+3

然后修复您的代码。代码示例似乎工作正常(http://www.codingforandroid.com/2011/01/using-orientation-sensors-simple.html与gezdy的评论配对) – Vaiden 2013-06-13 14:09:32

+1

或者,您可能需要重新校准您的设备 – Vaiden 2013-06-17 08:35:56

5

感谢Dan他的示例代码。

但只是一个小修正:根据本discussion变化event.valuesevent.values.clone()
经过此修改后,它适用于我。