0

私のアプリでは、加速度計が特定のしきい値を超えている時間をカウントしたいのですが、これを行う方法がわかりません。
私の加速度計の感度は に設定されて'SensorManager.SENSOR_DELAY_GAME'いるため、このonSensorChanged()メソッドは 1 秒間に約 20 回呼び出されます。

movementFlag加速度計の速度がしきい値を超えると true に設定し、しきい値を下回ると false に戻す というフラグがあります。

つまり、1 時間にわたって、movementFlagtrue に設定されている合計時間をカウントアップし、設定されるたびにこの時間の値を増やし、false に設定されている場合も同様にカウントしたいとします。私は 2 つの値を持つこと
ができるかもしれないと考えました。これらの値を互いに差し引くと、毎回フラグが設定されている時間が得られます。 しかし、フラグが設定されている間ずっとではなく、フラグの遷移時にこれを行う方法がわかりません。 これを行う方法またはここでやりたいことを行う別の方法を誰かに教えてもらえますか? ありがとうmoveStartmoveFinishSystem.currentTimeMillis()

4

1 に答える 1

1

トランジションがいつ発生するかを知るために、2 つの値を保存する必要があります。それで:

  1. 各センサー変更イベントで次のことを行います: prevV = lastV; lastV = 動きフラグ
  2. prevV!=lastV の場合、変更があります!!
  3. LastV==true の場合、移動の開始を意味します - 開始時刻を記憶します (moveStart)
  4. false の場合は移動の終了です - 終了時刻 (moveFinish) を記憶して減算します

このようにして、変更のみに時間を蓄積できます。

于 2011-03-01T15:54:57.387 に答える