首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有可能用Android传感器来检测垂直运动(只有上下移动)?

有没有可能用Android传感器来检测垂直运动(只有上下移动)?
EN

Stack Overflow用户
提问于 2017-05-25 12:35:37
回答 1查看 1.4K关注 0票数 2

我几乎读过这里关于垂直运动的每一个问题,但我没有一个确切的结论和想法。因为大多数问题都是关于游戏编程的,其中涉及到很多噪音、旋转等问题,比如这个或者这个

我的问题很简单。我只想检测上下运动(对或错,没有测量)。我不在乎是肖像还是景观模式还是旋转。我只想知道用户是上下移动电话。例如,我想检测到拉起的运动。我把我的手机放在我的口袋里,然后拉起。有可能吗?它能有多精确,我应该把注意力集中在哪些传感器上?

EN

回答 1

Stack Overflow用户

发布于 2017-05-26 10:22:22

这实际上比你想象的要困难得多。

手机的陀螺仪传感器给你手机的移动相对于手机,而不是世界。把手机正面朝上,平躺在桌子上会让你

  • x = 0.0
  • y = 0.0
  • z = -9.8

由于传感器的作用,这些数值会有轻微的波动。当手机旋转时,这些基本(静止)值会发生变化--在45度时。

  • x = 6.93
  • y = 0
  • z = 6.93

所以sqrt(x*x + y*y + z*z) = 9.8。如果你想隔离上下移动,你要么停止手机旋转,要么忽略这个移动。

如果你停止手机旋转--例如,手机必须直立放在口袋里,那么你只需看一下x组件,它会在休息时读取-9.81,而变化会显示加速,较小的负值或正的向上,在向下的方向上会显示更多的负值。

如果您希望忽略其他移动(例如,用户只将此用于定义的活动),则绝对值即可。sqrt(x*x + y*y + z*z)将在休息时为您提供9.8,而对该值的更改将由设备加速所致。稍后再学一点数学(蛮力的数值积分),你就可以有速度或距离的旅行(尽管注意到这很快就会变得非常不准确……)

注意,有一个旋转矢量传感器 API可能允许您从陀螺仪读数中移除设备的方向,允许您计算真实世界的运动,但是我还没有尝试过这个API,并且不知道需要什么额外的硬件(如果有的话)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44180739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档