Android加速度计跳帧

时间:2016-07-06 04:22:49

标签: java android accelerometer android-sensors sensormanager

我终于想出了如何在Android中实现加速度计,但似乎是在跳帧。我怀疑这是因为当我使用这样的加速度数据时:

velX += event.values[0]*(deltaTime/1000);
velY += event.values[1]*(deltaTime/1000);
velZ += event.values[2]*(deltaTime/1000);

将以m / s为单位的加速度转换为以m /(帧的时间)为单位的速度。这似乎表现得很好,除了一些意外的行为。例如,使用velY,如果我向上移动手机并停止,则velY会变得非常大。看来,减速比加速更多。

然后我计算了FPS,看看我是否真的得到了最小的传感器延迟,就像我用sm.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_FASTEST);

指定的那样

我还在Google Play商店中测试了一个名为Accelerometer Analyzer的应用,发现它的速度达到了260 FPS,而我的应用每秒调用onSensorChanged()次约为130次。这甚至发生在我清空方法并用FPS计数器替换它时。

在快速向上移动设备然后停止时,您可以在此速度图表片段中看到此效果。

Graph of velocity while moving phone upwards

不知何故,速度变为负面。

希望有人知道这个问题。

编辑:我想确认我使用的是Sensor.TYPE_LINEAR_ACCELERATION而不是Sensor.TYPE_ACCELEROMETER

0 个答案:

没有答案