java - 准确(方位角)罗盘方向 Android 3.2 平板电脑

标签 java android rotation tablet compass-geolocation

亲爱的程序员/脚本编写者/工程师/其他人,

问题: 我目前正在为 Android 3.2 平板电脑开发增强现实应用程序,但在获取准确的罗盘读数方面遇到一些问题。我需要确切地知道平板电脑所面向的 (z) 方向(从北方测量)。以度数或弧度为单位并不重要。

我目前尝试过的:

  1. 我使用磁力计和加速度计来计算角度。它有一个很大的缺点。如果旋转 90 度,传感器将测量更大或更小的角度。即使我处于远离金属或任何磁性物体的开放区域。即使赤纬也不能解决问题。

  2. 使用陀螺仪是一种选择。我尝试测量旋转速度并将测量的单位存储到变量中以了解确切的 View 方向。不过,似乎有一个因素会导致失真。我发现快速旋转会扭曲准确的方向测量。陀螺仪的漂移并没有那么麻烦。该应用程序检查其他传感器是否有任何移动。如果没有检测到,则不会考虑陀螺仪的旋转变化。

  3. 旋转 vector 工作正常。它有一些问题,例如陀螺仪。如果你缓慢地移动并突然停止,它会飘走几秒钟。另一个问题是,快速旋转时它会不准确,具体取决于速度和旋转次数。 (当我向各个方向 Swing 平板电脑时,您不会想知道我的同事如何看我......)

  4. Sensor.Orientation,没什么好说的。由于某种原因它已被弃用,所以我不会使用它。互联网上的很多例子都在使用这种传感器,它可能与磁性/加速度计组合相同。

所以我目前没有主意。你能帮我进行头脑 Storm /解决方案吗? 预先感谢您真诚的罗兰

  • 编辑1: 我愿意提供我尝试过的代码。

最佳答案

我正在总结我们的评论:

  1. 由此可知video手机上的传感器一开始就不是很准确。读起来也很有趣的是 this
  2. 用户必须通过将手机平放的 8 字形 Action 来校准传感器,这一点很重要。应用程序可以以编程方式检查是否需要进行此类校准并通知用户。看这个question了解详情
  3. 为了消除抖动,需要使用某种低通滤波器对从传感器获得的值进行滤波。这也已经discussed在 StackOverflow 上。
  4. 获得的方向不是真北。要获得真北,必须使用 GeomagneticField

关于java - 准确(方位角)罗盘方向 Android 3.2 平板电脑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10095388/

相关文章:

java - 屏幕上只允许 1 个(子)JFrame

java - 如何使用 java-stream 比较两个文件并找到某个分组中的值之和?

java - 如何使用文本、图像和复选框过滤自定义 ListView ?

java - 如何在android中制作一个显示设备硬件规范的应用程序

cordova - 在 iOS 6 上,PhoneGap 2.1 iPad 应用程序不再自动旋转

c# - 使用 Kinect SDK 创建完整的 3d 骨架

c - 我无法判断这个旋转功能是否按预期工作

java - 如何验证字符串是否在枚举注释中

Android installLocation 和 BOOT_COMPLETED

android - android中的xml文件解析