Android compass示例

Android compass示例,android,compass-geolocation,Android,Compass Geolocation,我正在搜索Android的compass示例。我所需要做的就是获得正确的方位(在纵向和横向模式下) 我已经找到了几个样本,一些只使用传感器。一些使用传感器。一些使用传感器的组合。一些使用加速计和传感器。一些使用磁场 哪一种是获取Android 1.6-4.0传感器方位角的正确且常见的方法?传感器。不推荐使用TYPE_ORIENTATION 文档中说应该使用SensorManager.getOrientation() 因此,您应该从传感器中读取数据。键入加速计以及传感器。键入磁场,然后调用传感器管

我正在搜索Android的compass示例。我所需要做的就是获得正确的方位(在纵向和横向模式下)

我已经找到了几个样本,一些只使用
传感器。一些使用
传感器。一些使用
传感器的组合。一些使用加速计
传感器。一些使用磁场


哪一种是获取Android 1.6-4.0传感器方位角的正确且常见的方法?

传感器。不推荐使用TYPE_ORIENTATION

文档中说应该使用
SensorManager.getOrientation()

因此,您应该从传感器中读取数据。键入加速计以及传感器。键入磁场,然后调用传感器管理器。getRotationMatrix()
,最后调用传感器管理器。getOrientation()
,这将返回手机的方向


从这里,如果你看到这张图,你可以很容易地得到手机的方位。这可能是您的第二个示例所做的,但我不知道,因为您没有向我展示它是什么。

使用传感器的组合。键入加速计和传感器。键入磁场和传感器管理器。getOrientation()
方法没有给我精确的值。不推荐使用的方法
传感器。键入\u方向
效果良好:

感谢Dan提供的示例代码


但是有一点小小的修正
:根据这一点将
event.values
更改为
event.values.clone()

修改后,我现在可以使用了。

很抱歉,我忘了附上示例:这是正确的方法吗?显然,如何使用数据取决于你,
onSensorChanged
是一个有趣的数学问题。还有一个问题:如何从“azimut=orientation[0];”线中获得以度为单位的正确方位?@nr1 math。toDegrees(orientation[0])修复代码。代码示例似乎工作正常(与gezdy的评论相匹配),或者您需要重新校准您的设备