Java 基于加速度计值的Android速度

Java 基于加速度计值的Android速度,java,android,Java,Android,我需要根据加速计的值获得android设备的速度。我编写了一个代码,让我可以得到加速度计的值,然后我用公式计算速度: v=v0+at。(矢量计算) 我的问题是我的速度只会增加,而不会减少。我认为问题在于,这个装置永远不会得到负加速度 你能帮我吗?你是在减去重力吗?该设备总是在加速——即使它只是坐在你的桌子上,它也在离地心9.8米/秒^2的地方加速。从加速度计获取速度可能是不可能的(忘记可靠性),因为在恒定速度下不会有加速度(重力除外)。您最好获取GPS位置数据及其相关的时间样本,并按时间的距离计

我需要根据加速计的值获得android设备的速度。我编写了一个代码,让我可以得到加速度计的值,然后我用公式计算速度: v=v0+at。(矢量计算)

我的问题是我的速度只会增加,而不会减少。我认为问题在于,这个装置永远不会得到负加速度


你能帮我吗?

你是在减去重力吗?该设备总是在加速——即使它只是坐在你的桌子上,它也在离地心9.8米/秒^2的地方加速。

从加速度计获取速度可能是不可能的(忘记可靠性),因为在恒定速度下不会有加速度(重力除外)。您最好获取GPS位置数据及其相关的时间样本,并按时间的距离计算速度。

您可以在有加速度计和数字指南针的手机中使用加速度计和数字指南针的组合来确定本节中提到的速度和方向

如果你所需要做的只是确定这个人是否在行走,那么你所需要的就是加速度计。只需处理脚步的输出

网络上有很多关于用加速度计检测脚步的教程

这里有一个应用程序说明:这提供了一个像样的数学背景和一个示例算法。当然,这取决于您提取数学并为Android重写它(示例代码是用C编写的)。我目前还不知道有哪一个开源的android库具有足迹检测算法


如果您实现了一些东西,我希望获得代码,不要忘记发回结果。

是的,我正在这样做。我认为9.8 m/s^2适用于Z组件。只有当设备位于桌子或其他完全水平的表面上时才是这样。是的,你是对的。因为我只是考虑到电话是水平的,所以我忘了。谢谢;)好吧,问题是我正试图应用航位推算技术来补偿暂时的GPS故障。因此,当我开始从加速度计获取值时,我没有GPS连接。我知道我会有一个累积误差,我知道这些值是不可靠的,但这是一个学术性的工作,只是为了检查它是否可能