Android加速方向

2023-12-24

经过一段时间的搜索,我没有找到任何方法将平移加速度方向与旋转隔离。

我正在寻找一种方法来获得加速度方向,而与手机的旋转方式无关(当然也与手机的旋转方式无关)。

基本上,这将使我能够区分加速、减速和方向改变。

我尝试用从以下位置获得的加速度传感器角度进行补偿getOrientation但我实验过getOrientation当设备进行平移运动(加速度)时,角度(方位角、俯仰角和横滚角)不同。

我需要两者之一:无论设备如何旋转,加速度方向或无论设备如何加速,方向值。

这可能吗?


终于我们找到了!

After 安卓文档 http://developer.android.com/reference/android/hardware/SensorManager.html#getRotationMatrix%28float%5B%5D,%20float%5B%5D,%20float%5B%5D,%20float%5B%5D%29我们可以得到旋转矩阵(getRotationMatrix)来改变移动设备的坐标系:旋转矩阵R将一个向量从设备坐标系变换到世界坐标系。

但在参数文档中说(这是测验):

重力 - 是包含重力矢量的 3 个浮点数的数组 以设备的坐标表示。您可以简单地使用这些值 由 TYPE_ACCELEROMETER 类型的传感器的 SensorEvent 返回。

那么,如果您使用文档中所说的加速度计值作为旋转矩阵的参数,当然加速度会受到影响,而移动平移和矩阵将毫无用处。

您必须使用重力传感器值(类型为 TYPE_GRAVITY 的传感器),而不是使用加速度计传感器值

由于该传感器不受移动设备平移的影响,因此可以在移动设备平移时使用旋转矩阵。

最后,适合我们的代码是:

float[] trueacceleration = new float[4];
float[] R = new float[16];
float[] RINV = new float[16];    

SensorManager.getRotationMatrix(R, I, GRAVITY, geomagnetic);
Matrix.invertM(RINV, 0, R, 0);          
Matrix.multiplyMV(trueAcceleration, 0, RINV, 0, linearAcceleration, 0);

Where

  • 重力是来自 TYPE_GRAVITY 传感器的值的矢量,
  • 地磁是一个向量,其值来自 TYPE_MAGNETIC_FIELD 传感器,并且
  • LinearAcceleration 是一个向量,其值来自 TYPE_LINEAR_ACCELERATION 传感器

然后,在真正的加速度向量中,无论移动设备如何移动其方向,我们都会在移动平移中产生加速度。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android加速方向 的相关文章

随机推荐

  • Google Sheets 组合骰子的公式

    情况 我正在创建一个骰子符号 清理 公式 以便将类似的骰子组合起来 例如 1D6 1D6 将变为 2d6 使事情变得复杂的是 负掷骰 如 1D6 不能汇总到最终结果中 意思是 1D6 1D6 不等于 0 为什么 因为 1D6 并不等于每次滚
  • sqlite3:由于未最终声明而无法关闭

    我有两个 sqlite 连接并按如下方式执行 CMyDatabase 是 sqlite3 的派生类 CMyDatabase dbConnection1 new CMyDatabase dbConnection1 gt OpenDataBas
  • 布局更改时的动画

    每次调整窗口大小时 JavaFX 中的基本 FlowPane 都会对其中的项目进行布局 然而 没有动画 结果相当不和谐 我在 FlowPane 内每个节点的layoutX 和layoutY 属性上连接了一个更改侦听器 结果或多或少有效 但有
  • 如何在 C++ 中声明高分辨率时钟的变量?

    在这里的例子中 https en cppreference com w cpp chrono high resolution clock now https en cppreference com w cpp chrono high res
  • 在 C 中交换数字中的位[重复]

    这个问题在这里已经有答案了 在一次 C 面试中 我被要求将数字的前 4 位与最后 4 位交换 例如 1011 1110 应为 1110 1011 有人有解决方案吗 如果您还没有见过或做过很多事情 那么一个很好的学习资源是 位摆弄黑客 htt
  • 错误 > 无法通过端口 8080 连接到 Cloud Shell > 使用代码服务器连接 Visual Code 时

    尝试在 VM 实例中安装 Visual Code IDE 运行代码服务器后 在检查浏览器上的视图时 出现错误 错误 无法连接到端口 8080 上的 Cloud Shell 确保您的服务器正在侦听端口 8080 然后重试 在此输入图像描述 h
  • React recaptcha google根本不显示

    我已经安装了react recaptcha google并按照此处的示例添加到我的应用程序中 https medium com codeep io how to use google recaptcha with react 38a5cd5
  • 如何从仅使用 GPU 访问创建的 IDXGISurface 中获取像素数据?

    概括地说 我想要完成的是捕获 部分 屏幕并将捕获的内容转换为数字图像格式 以下步骤概述了我认为的解决方案 设置一个Direct3D11CaptureFramePool https learn microsoft com en us uwp
  • Rails 5 data-method=delete 发送 GET 请求

    我在设置要删除的 http 动词时遇到问题 这是我在 Rails 5 中的第一个应用程序 我也在使用购买的主题 所以我确信我错过了一些愚蠢的东西 当我创建以下链接时 I get a href users sign out Sign out
  • 用于接受有效主机名、IPv4 或 IPv6 地址的 Java 正则表达式

    有人有一个好的 最好是经过测试的 正则表达式来仅接受有效的 DNS 主机名 IPv4 或 IPv6 地址吗 我明白你可能是forced使用正则表达式 但是 如果可能的话 最好避免使用正则表达式来执行此任务 而使用 Java 库类来进行验证
  • 将对象转换为原始 int

    如何将对象 不是字符串 例如 TreeNode item 转换为原始类型 例如 int 回应您的最后评论 只需仔细检查该对象确实是 Integer 类型 然后使用自动装箱 我假设您的编译器级别为 1 5 Object o getTheVal
  • 使用 image.onload 将多个图像绘制到画布上

    当我尝试在画布上绘制大型二维图像数组时遇到问题 我使用一个单独的程序 获取一个大图像文件 并将其分解为更小的 统一的部分 我使用 2D 数组来表示图像的 网格 理想情况下 当我分配网格中每个元素的 src 时 一旦准备好 该图像就会被绘制到
  • 如何确定 Linux 上是否使用 Java 或 JRuby 运行不同的进程 ID?

    我需要查看给定的进程 ID 是否正在运行 并且它必须在 Java 或 JRuby 中工作 最好是 Ruby 解决方案 它可能取决于 Linux 系统 特别是 Debian 和 或 Ubuntu 我已经有了我要找的PID 只需要看看它当前是否
  • Wolfram Mathematica 中处理大数据文件的方法

    我想知道 Mathematica 中是否存在处理大文件的方法 目前我有一个大约 500Mb 的包含表数据的文件 Import data txt Table 什么是替代方式 Use OpenRead file http reference w
  • 无法使用索引类型 int 为 [CLPlacemark] 类型的值添加下标

    我想检索当前位置 我使用 swift Xcode 7 进行工作 我看了 PLUSIEUR 教程 但每次他们都使用相同的方法 这是我的代码和我的错误 错误 无法使用索引为 CLPlacemark 类型的值添加下标 类型 int import
  • Google Books API - 不断收到错误代码“403”原因:“ipRefererBlocked”

    我用它作为我的请求网址 String isbnUrl https www googleapis com books v1 volumes q isbn isbn key myAPIKEY 谁能告诉我为什么我不断收到这样的回复 error e
  • 从浏览器获取重定向 URL - Android

    这是我的问题 我想从用户那里授权我的应用程序 为此 API 为我提供了 OAuth 2 0 流程 我有一个链接 A 其中包含我的应用程序密钥和重定向链接 eg REDIRECT LINK 链接 A 在浏览器中打开时要求用户提供用户名和密码并
  • Python - 如何在for循环中连接到字符串? [复制]

    这个问题在这里已经有答案了 我需要 在 for 循环中连接到字符串 为了解释一下 我有这个清单 list first second other 在 for 循环中我需要以此结束 endstring firstsecondother 你能给我
  • 使用两个或多个 $(document).ready.. 是否会影响性能?

    我正在做一个网站项目 项目负责人告诉我 保留两个或两个以上是不对的 document ready 对性能有影响吗 我更喜欢保留多个 document ready因为我有很多 jquery 代码 这是划分代码块的好方法 这是一个额外的函数调用
  • Android加速方向

    经过一段时间的搜索 我没有找到任何方法将平移加速度方向与旋转隔离 我正在寻找一种方法来获得加速度方向 而与手机的旋转方式无关 当然也与手机的旋转方式无关 基本上 这将使我能够区分加速 减速和方向改变 我尝试用从以下位置获得的加速度传感器角度