0

在我的应用程序中,我想计算加速度计超过某个阈值的时间,但我不确定如何执行此操作。
我的加速度计的灵敏度设置为,'SensorManager.SENSOR_DELAY_GAME'因此该onSensorChanged()方法每秒调用大约 20 次。

我有一个名为的标志movementFlag,当加速度计速度超过阈值时,我将其设置为 true,并在低于阈值时设置回 false。

所以说在一小时的时间里,我想计算movementFlag设置为 true 的总时间,每次设置时都会增加这个时间值,设置为 false 时也是如此。
我想也许我可以有 2 个值 -moveStart并且moveFinish- 我可以System.currentTimeMillis()在 moveFlag 从 true 到 false 的转换时设置,反之亦然。将这些值相互减去会给我每次设置标志的时间。
但我不知道如何仅在标志的转换时执行此操作,而不是在设置标志的整个时间。
谁能告诉我如何做这个或其他方法来做我想做的事情?谢谢

4

1 回答 1

1

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

  1. 在每个传感器更改事件上执行:prevV = lastV; lastV = 运动标志
  2. 如果 prevV!=lastV,那么我们就有变化了!!
  3. 如果 LastV==true,则表示运动开始 - 记住开始时间 (moveStart)
  4. 如果它是假的,它是运动的结束 - 记住结束时间(moveFinish)并减去

这样,您可以只在更改上累积时间。

于 2011-03-01T15:54:57.387 回答