关于输入:Android线性加速

Android Linear Acceleration

加速度计能否检测到设备的移动(例如,如果我向上、向下、向左或向右拖动设备)?请提供示例实现。


加速度计和陀螺仪可以检测设备在 3 个轴上的angular和加速度。

由于加速度本身并不能告诉你速度和距离,所以你可以知道它们。

但是如果你知道设备的速度当前为 0,并且它开始加速,你可以通过基本的物理方程知道它的速度和距离:
您跟踪设备加速度。让跟踪分辨率为毫秒。所以每毫秒,speed += Acceleration * 0.001distance += (speed * 0.001) + (Acceleration * 0.001 * 0.001 /2)。这会跟踪单个方向的运动。

请注意,您必须确定加速度、速度和距离的方向,这将是 Vector3。然后使用一些数学转换将当前的加速度矢量转换为您的方向。我建议与地球相比,方向将是平坦的。让事情变得更容易。

这可以用来判断设备是否正在移动(speed!=0,虽然如果移动完全垂直于您的矢量,设备可能正在移动,但 speed==0 为真)以及移动的方向


加速度计检测加速度,而不是恒定运动。因此,您的加速度计会在启动和停止时检测到运动,但无法告诉您设备移动了多远。


在 Android 开发者网站上有一个很好的例子,说明如何从常规 Sensor.TYPE_ACCELEROMETER 计算线性加速度:

http://developer.android.com/reference/android/hardware/SensorEvent.html#values


请看这个帖子:Android TYPE_LINEAR_ACCELERATION 传感器 - 它显示什么?

我使用加速度计检测设备的速度、运动。但是我在使用 LINEAR_ACCELEROMETER 传感器时遇到了麻烦。
无论如何,在起点没有校准就无法计算运动。