Android - 如何在很长一段时间内记录加速度计超过+低于阈值的时间

时间:2011-03-01 15:36:08

标签: android time accelerometer increment threshold

在我的应用中,我想计算加速度计超过一定阈值的时间,但我不确定如何做到这一点。
我的加速度计的灵敏度设置为'SensorManager.SENSOR_DELAY_GAME',因此onSensorChanged()方法大约每秒调用20次。

我有一个名为movementFlag的标志,只要加速计速度超过阈值,我就会设置为true,当它低于阈值时设置为false。

所以说过一个小时的空间,我想计算movementFlag设置为true的总时间,每次设置时增加这个时间值,并且设置时间相同假的 我想也许我可以有两个值 - moveStartmoveFinish - 我可以在movingFlag从true转换为false时设置为System.currentTimeMillis(),反之亦然。相互减去这些值会给我每次设置标志的时间 但是我不知道如何在标志的过渡时这样做,而不是在设置标志时的整个时间 任何人都可以告诉我如何做到这一点或其他方法来做我想做的事情吗?感谢

1 个答案:

答案 0 :(得分:1)

您需要存储两个值以了解转换何时发生,一个存储moveFlag的最后一个值(让我们称之为lastV),另一个存储值之前的值(prevV)。然后:

  1. 在每个传感器更改事件上执行:prevV = lastV; lastV = movementFlag
  2. 如果prevV!= lastV,那么我们有变化!!
  3. 如果LastV == true,则表示开始移动 - 记住开始时间(moveStart)
  4. 如果是假,那就是运动的结束 - 记住结束时间(moveFinish)并减去
  5. 这样,您可能只会在更改上累积时间。