安卓指南针示例

11

我正在寻找一个Android指南针示例。我只需要获得正确的方位角(在竖屏和横屏模式下)。

我已经找到了几个示例,一些示例仅使用 Sensor.TYPE_ORIENTATION,一些示例则结合使用 Sensor.TYPE_ACCELEROMETERSensor.TYPE_MAGNETIC_FIELD

哪种是获取方位角的正确和常用方法,比如Android 1.6-4.0?

3个回答

21

Sensor.TYPE_ORIENTATION已被弃用。

文档中建议您改用SensorManager.getOrientation()

因此,您应该从Sensor.TYPE_ACCELEROMETERSensor.TYPE_MAGNETIC_FIELD读取数据,然后调用SensorManager.getRotationMatrix(),最后调用SensorManager.getOrientation(),以获取手机的方向。

从那里,如果您查看这个图表,就可以轻松地获得手机的方向了。这可能是您第二个示例所做的事情,但我不知道,因为您没有展示给我。


4
抱歉,我忘记附上示例链接:http://www.codingforandroid.com/2011/01/using-orientation-sensors-simple.html 这是正确的方法吗? - nr1
显然,你如何使用数据取决于你自己,“onSensorChanged”是有趣的数学运算所在。 - Dan
还有一个问题:如何从“azimut = orientation [0];”行中获得正确的方位角度? - nr1
1
@nr1 Math.toDegrees(orientation[0])@nr1 Math.toDegrees(orientation[0]) - Bill Mote

5

感谢 Dan 提供的示例代码。

但是需要进行一点小修正:根据这个讨论,将event.values更改为event.values.clone()
在进行这个修改后,它对我起作用了。


0

使用 Sensor.TYPE_ACCELEROMETERSensor.TYPE_MAGNETIC_FIELD 以及 SensorManager.getOrientation() 方法的组合不能给我提供精确值。已弃用的方法 Sensor.TYPE_ORIENTATION 运作得很好。:)


3
请修复您的代码。该代码示例似乎工作正常(与gezdy的评论配对使用http://www.codingforandroid.com/2011/01/using-orientation-sensors-simple.html)。 - Vaiden
1
或许你需要重新校准你的设备。 - Vaiden

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接