我的工作,它使用的应用程序compass
虽然我成功地实现了它,但没有这样的简短解释,说明how it works
。 怎么样的TYPE_ACCELEROMETER
和TYPE_MAGNETIC_FIELD
被用来获取方向。 我知道我们没有得到它,我们得到了数组的零指数的azimuth
,从中我们拿到学位,来到知道北方。 但如何让这一切。 任何人能解释吗?
其次,如果我把我的手机在地板上假设,它在北美的方向点时,它被放置在ground
,现在我拿起我的手机不放我upside down
会发生什么,为什么?
根据我的理解方向shouldn't changed
。 我可能是错的,任何人都可以请引导我在此。 非常感谢。
同时需要Magnectic field
和Accelerometer
来计算罗盘方向。 你可以看到为什么,如果你读的源代码getRotationMatrix
或更详细的说明,请参见转换磁场X,Y,Z值从设备到全局参考坐标
如果你站在同一个地方,磁场不会改变。 这是onSensorChanged返回应该改变很小的磁场矢量。 这并不是说改变矢量但改变设备的坐标。 这是什么被计算并调用的意义"compass direction"
,混淆你。 在这种情况下,以被用作方向"compass direction"
是的方向y coordinate
。 因此,当你垂直握住手机时, y coordinate
指向天空或地面,它没有意义谈论"compass direction"
我正在网上免费的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