如何检索高质量的指南针方向(如 Google 地图)?

2024-01-27

我发现的所有在 Android 中获取指南针方向的指南都有一个错误:当您以纵向模式握住手机并“看”地平线上方时,指南针箭头会从正确方向旋转 180 度。

谷歌地图方向指示器不存在这个问题。

谷歌地图的另一个好处是它们可以以某种方式估计指南针的准确性。知道他们是怎么做到的吗?


您问的错误是由于欧拉角或称为万向节锁引起的。

为了解决非常大的角度差异,您应该检查您的设备是否平坦,或者在使用重力传感器获取倾斜度或从带有低通滤波器的加速度计获取重力后不检查倾斜度。如果不平坦(AR 应用程序或倾角 >25 || 倾角

SensorManager.getRotationMatrixFromVector(rotationMatrix, event.values);
SensorManager.remapCoordinateSystem(rotationMatrix, SensorManager.AXIS_X, SensorManager.AXIS_Z, remappedRM);
SensorManager.getOrientation(remappedRM, orientation);

这解决了万向节锁定问题,但是,3D 指南针(普通指南针不会给出正确的结果,因为它们仅映射到 x,y 并发生万向节锁定)我在 Play 商店中看到过,当您保留时,这里的每个代码都有所不同您的设备平放或屏幕指向您。这种差异有时高达 10 度。我没能解决它。大多数差异在 1-5 度之间,但有时我会看到它上升到 10 度,这是不可接受的。

Google 测量您所在位置的方位角。有一个代码可以找到轴承。

currentLocation.getBearing();

经纬度的精度(当前位置的精度)决定了方位的精度。

从最精确到最不精确的指南针方法列表按顺序排列

  1. 使用 GPS/Wife(Google 的融合位置)位置并获取位置方位
  2. 使用旋转矢量(需要磁场传感器,您应该检查它是否可用),它是一个融合传感器(磁场+陀螺仪+加速度计和软件部件)并使用卡尔曼滤波器来平滑值,但检查倾斜度以重新映射方向
  3. 重力/加速度计+磁场传感器。这将产生可怕的噪音,为了平滑它,您应该使用移动平均或低通滤波器(这不是为了隔离重力,而是为了使用阈值频率来防止跳高)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何检索高质量的指南针方向(如 Google 地图)? 的相关文章

  • 如何为ScrollView放置固定图像背景?

    我应该想要滚动视图滚动 而不是背景中的图像 将图像添加到滚动视图框架之前的视图层次结构的较高位置
  • 如何清除所有WebView存储的信息?

    我有一个 Android 浏览器 我可以选择清除缓存 存储 cookie 等 代码如下所示 webView clearCache true webView clearFormData webView clearHistory webView
  • 如何重试已消耗的 Observable?

    我正在尝试重新执行失败的已定义可观察对象 一起使用 Retrofit2 和 RxJava2 我想在单击按钮时重试特定请求及其订阅和行为 那可能吗 service excecuteLoginService url tokenModel Ret
  • Android - 从资产中解析巨大(超大)JSON 文件的最佳方法

    我正在尝试从资产文件夹中解析一些巨大的 JSON 文件 我如何加载并添加到 RecyclerView 我想知道解析这种大文件 大约 6MB 的最佳方法是什么 以及您是否知道可以帮助我处理此文件的良好 API 我建议您使用GSON lib h
  • Android 30+ 中的视频捕获意图 - 只有所有者才能与待处理项目交互

    我正在尝试在我的应用程序上捕获视频 它可以在 android API 30 以下运行 但不能在 30 以上运行 似乎在 sdk 30 之后 android 不允许完全读取外部存储 作用域存储 我目前遇到这个错误 java lang Ille
  • Android 中 Kotlin 协程的正确使用方式

    我正在尝试使用异步更新适配器内的列表 我可以看到有太多的样板 这是使用 Kotlin 协程的正确方法吗 这个可以进一步优化吗 fun loadListOfMediaInAsync async CommonPool try Long runn
  • Android SIP 来电使用带有广播接收器的服务

    大家好 其实我正在尝试创建一个应用程序 支持基于 SIP 通过互联网进行音频呼叫 这里使用本机 sip 我遇到了来电问题 我已经完成了服务的注册部分 但是在接听电话时我无法接听电话 请帮助我 Service file package exa
  • 你的CPU不支持NX

    我刚刚下载了 android studio 但是我遇到了一个问题 当我运行它时 它说你的 cpu 不支持 NX 我应该怎么办 NX 或实际上是 NX 处理器位 是处理器的一项功能 有助于保护您的 PC 免受恶意软件的攻击 当此功能未启用并且
  • 如何在PreferenceActivity中添加工具栏

    我已经使用首选项创建了应用程序设置 但我注意到 我的 PreferenceActivity 中没有工具栏 如何将工具栏添加到我的 PreferenceActivity 中 My code 我的 pref xml
  • 尝试在 ubuntu 中编译 android 内核时出错

    我正在尝试从源代码编译 Android 内核 并且我已经下载了所有正确的软件包来执行此操作 但由于某种原因我收到此错误 arm linux androideabi gcc error unrecognized command line op
  • 在 android DatePickerDialog 中将语言设置为法语

    有什么办法可以让日期显示在DatePickerDialog用法语 我已经搜索过这个但没有找到结果 这是我的代码 Calendar c Calendar getInstance picker new DatePickerDialog Paym
  • 字符串数组文本格式化

    我有这个字符串 String text Address 1 Street nr 45 Address 2 Street nr 67 Address 3 Street nr 56 n Phone number 000000000 稍后将被使用
  • 错误:在根项目“projectName”中找不到项目“app”

    我有一个在 Eclipse 中开发的旧应用程序 现在尝试将其迁移到 Android Studio 我更新了库并遵循了基本步骤 现在 我收到此错误 Error Project app not found in root project pro
  • Android Studio - Windows 7 上的 Android SDK 问题

    我对 Google i o 2013 上发布的最新开发工具 Android Studio 有疑问 我已经成功安装了该程序并且能够正常启动 我可以导入现有项目并对其进行编辑 但是 当我尝试单击 SDK 管理器图标或 AVD 管理器图标时 或者
  • 在activity_main.xml中注释

    我是安卓新手 据我所知 XML 中的注释与 HTML 中的注释相同 使用 形式 我想在 Android 项目的 Activity main xml 配置文件中写一些注释 但它给了我错误 值得注意的是 我使用的是 Eclipse 但目前 我直
  • 如何确定对手机号码的呼叫是本地呼叫还是 STD 或 ISD

    我正在为 Android 开发某种应用程序 但不知道如何获取被叫号码是本地或 STD 的号码的数据 即手机号码检查器等应用程序从哪里获取数据 注意 我说的是手机号码 而不是固定电话 固定电话号码 你得到的数字是字符串类型 因此 您可以获取号
  • 如何在Xamarin中删除ViewTreeObserver?

    假设我需要获取并设置视图的高度 在 Android 中 众所周知 只有在绘制视图之后才能获取视图高度 如果您使用 Java 有很多答案 最著名的方法之一如下 取自这个答案 https stackoverflow com a 24035591
  • 实现滚动选择 ListView 中的项目

    我想使用 ListView 您可以在其中滚动列表来选择一个项目 它应该像一个 Seekbar 但拇指应该是固定的 并且您必须使用该栏来调整它 我面临的一个问题是 我不知道这种小部件是如何调用的 这使得我很难搜索 所以我制作了下面这张图片 以
  • 将两个文本视图并排放置在布局中

    我有两个文本视图 需要在布局中并排放置 并且必须遵守两条规则 Textview2 始终需要完整显示 如果布局中没有足够的空间 则必须裁剪 Textview1 例子 文本视图1 文本视图2 Teeeeeeeeeeeeeeeeeextview1
  • 如何将 google+ 登录集成到我的 Android 应用程序中?

    大家好 实际上我需要通过我的应用程序从 google 登录人们 现在我阅读了 google 上的文档 其中指出 要允许用户登录 请将 Google Sign In 集成到您的应用中 初始化 GoogleApiClient 对象时 请求 PL

随机推荐

  • 通过应用自定义 css 类禁用 html 输入元素

    我想通过应用我的自定义 css 类来禁用 div 的所有输入元素 但我找不到任何可以禁用输入元素的 css 属性 目前我在做什么 div sercvice detail input attr disabled true retention
  • 找不到 Webpackject.preload.js 文件[重复]

    这个问题在这里已经有答案了 我将 Vue Typescript 与 webpack 结合使用 每次我打开页面inject preload js抛出一个错误 例如GET blob http URL 1fbc0606 8477 416b a45
  • Javascript 闭包和内存问题

    Following function add new table entry to table and return interface which has function which uses closure to access and
  • 什么是 .inc 以及为什么使用它?

    我经常在 PHP 中看到包含 inc 文件的示例 inc 是什么意思 它是用来做什么的 使用它有什么缺点和优点 它没有任何意义 只是一个文件扩展名 如果该文件被设计为被其他 PHP 文件包含 则某些人习惯用 inc 扩展名命名该文件 但这只
  • Nuxt3生成类型错误:无法读取null的属性(读取'isCE')

    我在我的应用程序中使用 Nuxt3 Vite Leaflet Bootstrap 该应用程序在开发中运行良好 但是当我尝试使用生成静态站点时npm run generate 我收到以下错误 类型错误 无法读取 null 的属性 读取 isC
  • 通过 python 使用 Google Drive API V3 获取 Google Drive 文件所有者电子邮件地址

    我无法通过 Google Drive API v3 获取 Google 云端硬盘上文件的所有者 我可以在 v2 下做到这一点 但事情已经改变了 根据文档 https developers google com drive api v3 re
  • 在Android Studio中使用自定义框架库(android.jar)

    我有自己的定制框架 android jar 并想在 Android Studio 中使用它 我的 build gradle 中有如下描述 dependencies compile files myandroid jar 但Android S
  • 如何将material-ui时间选择器更改为24小时格式

    目前使用的是Timepicker来自材料用户界面 我已将其设置为type time 它允许我通过 AM PM 选项选择一天中 12 小时内的时间 我希望我的选择器采用 24 小时格式 从而删除 AM PM 选项 我查看了material u
  • 为什么变量在更改其因变量后没有更新? [复制]

    这个问题在这里已经有答案了 我不明白为什么当我更改 x 时变量 y 不更新 y 变量依赖于 x 对吧 x 5 y x 2 print x print y x 3 Expect it to print 3 and 6 instead it p
  • 我可以在 robots.txt 中使用“Host”指令吗?

    Searching for specific information on the robots txt I stumbled upon a Yandex help page http help yandex com webmaster c
  • 为什么此保存方法不调整图像大小?

    我重写保存方法以便在上传后调整图像大小 以下代码似乎并未调整图像大小 我仔细检查了媒体文件夹 发现上传图像的原始尺寸 900x850 只有一份副本 Django 没有抛出任何错误 所以我不知道如何解决这个问题 需要明确的是 我可以毫无问题地
  • SQLAlchemy 自定义查询列

    我有一个如下定义的声明表 class Transaction Base tablename transactions id Column Integer primary key True account id Column Integer
  • Request.Url.Authority 未返回预期的域

    我正在网站的控制器中生成一封电子邮件 其中包含指向我的网站的链接 http Request Url Authority some page 当我在本地计算机上测试它时 这是有效的 返回localhost 12345 和生产中 返回www c
  • Angular 6 httpClient 使用凭据发布

    我有一些代码可以发布一些数据来创建数据记录 它在一个服务中 这是代码 import Injectable from angular core import HttpClient HttpHeaders from angular common
  • CakePHP 2.1 测量页面执行时间

    如何测量 CakePHP 2 1 中的页面执行时间 在 1 3 中 它在调试模式下呈现在代码中 你可以使用调试工具包插件 https github com cakephp debug kit找出执行时间 或者您可以在 app 中编辑 ind
  • 在 Windows 10 IoT 上使用 UWP 进行 LDAP 查询

    经过几个小时的搜索后 似乎无法从 UWP 应用程序查询本地 LDAP 目录 Microsoft Active Directory 或其他 这似乎是 UWP 产品中的一个相当奇怪的漏洞 因此我希望我只是错过了明显的漏洞 通用 Windows
  • 如何在构建的电子应用程序中获取开发工具?

    是否可以在构建的电子应用程序中显示开发工具 我使用构建的可执行文件electron packager与使用运行的应用程序的行为不同electron在命令行中 我无法看到抛出了哪些类型的异常 是的 可以在打包的应用程序中显示 DevTools
  • Android:单击时更改按钮颜色

    基本上 我正在尝试创建一个单击时的按钮 注意 NOT按下 会将颜色从 color1 更改为 color2 再次单击时 颜色将从 color2 变回 color1 我疯狂地搜索 我设法提取的唯一信息是如何在按下按钮时改变颜色 即当用户按住按钮
  • 将构造函数添加到 deftype 创建的类中

    为了与 Java 实现互操作性 我需要一个具有执行初始化的空构造函数的类 此类的对象需要具有类似于可变java字段的东西 即该对象代表游戏的后端 并且需要保持游戏状态 deftype 确实一切我想要做except提供一个无效构造函数 因为我
  • 如何检索高质量的指南针方向(如 Google 地图)?

    我发现的所有在 Android 中获取指南针方向的指南都有一个错误 当您以纵向模式握住手机并 看 地平线上方时 指南针箭头会从正确方向旋转 180 度 谷歌地图方向指示器不存在这个问题 谷歌地图的另一个好处是它们可以以某种方式估计指南针的准