Android 指南针示例
我正在寻找 Android 的指南针示例。我需要做的就是获得正确的方位(在纵向和横向模式下)。
我已经找到了几个示例,有些仅使用 Sensor.TYPE_ORIENTATION
,有些使用 Sensor.TYPE_ACCELEROMETER
和 Sensor.TYPE_ACCELEROMETER
的组合。 传感器.TYPE_MAGNETIC_FIELD
。
哪个是正确的 &获取 Android 1.6 - 4.0 的常用方法?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
Sensor.TYPE_ORIENTATION
已弃用。该文档说您应该使用
SensorManager.getOrientation()
代替。因此,您应该从
Sensor.TYPE_ACCELEROMETER
以及Sensor.TYPE_MAGNETIC_FIELD
读取数据,然后调用SensorManager.getRotationMatrix()
,最后调用SensorManager.getOrientation()
它将返回手机的方向。从那里,如果您看到此图,就可以轻松获得手机的方向。这可能就是你的第二个例子的作用,但我不知道,因为你没有告诉我它是什么。
Sensor.TYPE_ORIENTATION
is deprecated.The documentation says you should use
SensorManager.getOrientation()
instead.So you should read from
Sensor.TYPE_ACCELEROMETER
as well as fromSensor.TYPE_MAGNETIC_FIELD
, and then callSensorManager.getRotationMatrix()
and finallySensorManager.getOrientation()
which will return you the orientation of the phone.From there if you see this diagram it is trivial to get the phone's orientation. This is probably what your second example does, but I don't know because you didn't show me what it is.
感谢 Dan 提供示例代码。
但只有一个小修正:根据此 event.values 更改为
event.values.clone()
://groups.google.com/forum/?fromgroups=#!topic/android-developers/UNMaDEUcXb0" rel="noreferrer">讨论。经过此修改后,它现在对我有用。
Thanks to Dan for his sample code.
But there is just a little correction : change
event.values
toevent.values.clone()
according to this discussion.It works for me now after this modification.
使用
Sensor.TYPE_ACCELEROMETER
和Sensor.TYPE_MAGNETIC_FIELD
以及SensorManager.getOrientation()
方法的组合不会给我精确的值。已弃用的方法Sensor.TYPE_ORIENTATION
效果很好。 :)Using a combination of
Sensor.TYPE_ACCELEROMETER
andSensor.TYPE_MAGNETIC_FIELD
andSensorManager.getOrientation()
method doesn't give me precise values. The deprecated methodSensor.TYPE_ORIENTATION
works well. :)