如何计算手机在静止的垂直方向上的移动?

我正在开发一个应用程序使用Android操作系统,我需要知道如何计算设备在垂直方向上的运动。

例如,设备处于静止状态(A点),用户拿起它(B点),现在A点和B点之间有一个高度变化,我将如何计算?

我已经阅读了关于传感器和加速度计的文章,但是我找不到任何帮助我的东西。 任何人有任何想法?

如果你整合加速两次你得到的位置,但错误是可怕的。 在实践中是无用的。 这是为什么(Google技术讲座)在23点20分解释。 我强烈推荐这个video。

现在,你不需要任何准确的,这是一个不同的故事。 如video中所述,传感器融合后可以获得线性加速度 。 见传感器。 SensorEvent的TYPE_LINEAR_ACCELERATION 。 我首先会尝试使用高通滤波器来检测沿垂直轴的线性加速度的突然增加。

我不知道这是否适合您的应用程序。

实际上,您可以确定(仅)垂直位置而不测量随时间的加速度。 这是通过测量到地球中心的方向和磁北极的方向之间的angular度来完成的。

当电话的高度(高度)改变时,这只会改变(显着)。 你所做的是用accelerometermagnetometer来得到两个浮点arrays,将它们作为向量,使它们成为单位向量,然后任意两个单位向量之间的angular度是arccos(AxM)。

请注意,这是点产品即。 math.acos(A[0]*B[0]+A[1]*B[1]+A[2]*B[2])此angular度的任何变化都对应于高度变化。 还要注意,这将不得不根据实际单位进行校准,并且在不同的经度下,angular度与高度的变化比率将会不同; 但是这是获得高度绝对值的方法; 当然,当加速时,或者当附近有磁铁时,angular度也会变得偏斜:)

  1. 你可以将它关联到microTesla中的磁场传感器

  2. 可以使用dist =积分加速度〜sigma〜summation =积分速度+常数