如何式TYPE_ACCELEROMETER和TYPE_MAGNETIC_FIELD用于制造Andro

2019-09-28 12:29发布

我的工作,它使用的应用程序compass虽然我成功地实现了它,但没有这样的简短解释,说明how it works 。 怎么样的TYPE_ACCELEROMETERTYPE_MAGNETIC_FIELD被用来获取方向。 我知道我们没有得到它,我们得到了数组的零指数的azimuth ,从中我们拿到学位,来到知道北方。 但如何让这一切。 任何人能解释吗?

其次,如果我把我的手机在地板上假设,它在北美的方向点时,它被放置在ground ,现在我拿起我的手机不放我upside down会发生什么,为什么?

根据我的理解方向shouldn't changed 。 我可能是错的,任何人都可以请引导我在此。 非常感谢。

Answer 1:

同时需要Magnectic fieldAccelerometer来计算罗盘方向。 你可以看到为什么,如果你读的源代码getRotationMatrix或更详细的说明,请参见转换磁场X,Y,Z值从设备到全局参考坐标

如果你站在同一个地方,磁场不会改变。 这是onSensorChanged返回应该改变很小的磁场矢量。 这并不是说改变矢量但改变设备的坐标。 这是什么被计算并调用的意义"compass direction" ,混淆你。 在这种情况下,以被用作方向"compass direction"是的方向y coordinate 。 因此,当你垂直握住手机时, y coordinate指向天空或地面,它没有意义谈论"compass direction"



Answer 2:

我正在网上免费的Android当然,这是他用来做一个简单的指南针的示例代码,你可以看看这个: https://github.com/aporter/coursera-android/tree/master/Examples/ SensorCompass 。

该方法是作品是手机检测最强的“北”的磁场,北分的箭头,然后当加速度移动时,它根据改变的箭头。

另外,如果垂直拿着手机举过头顶,显示不会指向北方,因为手机没有与地面平行。



文章来源: How type TYPE_ACCELEROMETER and TYPE_MAGNETIC_FIELD used to make compass on android devices