Android - Как записать количество времени, в течение которого акселерометр превышает + ниже порогового значения в течение длительного периода - PullRequest
0 голосов
/ 01 марта 2011

В моем приложении я хочу подсчитать, как долго акселерометр превышает определенный порог, но я не уверен, как это сделать.
Чувствительность моего акселерометра установлена ​​на 'SensorManager.SENSOR_DELAY_GAME', поэтому onSensorChanged() метод вызывается примерно 20 раз в секунду.

У меня есть флаг с именем movementFlag, который я устанавливаю в значение true, когда скорость акселерометра превышает пороговое значение, и возвращаю значение в значение false, когда он падает ниже порогового значения.

Так, скажем, в течение часа я хочу подсчитать общее количество времени, в течение которого movementFlag установлено в значение true, увеличивая это значение времени каждый раз, когда оно установлено, и то же самое, когда оноустановить в false.
Я подумал, что, возможно, у меня могло бы быть 2 значения - moveStart и moveFinish - которые я мог бы установить в System.currentTimeMillis() при переходе motionFlag от true к false и наоборот.Вычитание этих значений друг от друга дало бы мне количество времени, которое флаг устанавливается каждый раз.
Но я не знаю, как сделать это только при переходе флага, а не все время, пока флаг установлен.
Может кто-нибудь сказать мне, как сделать тот или иной метод, чтобы сделать то, что я хочу сделать здесь?Спасибо

1 Ответ

1 голос
/ 01 марта 2011

Вам нужно хранить два значения, чтобы знать, когда происходит переход, одно, в котором хранится последнее значение вашего motionFlag (назовем его lastV), и одно, в котором хранится значение до этого (prevV).Затем:

  1. Для каждого события смены датчика выполните: prevV = lastV;lastV = motionFlag
  2. Если prevV! = lastV, то у нас есть изменение !!
  3. Если LastV == true, это означает начало движения - запомните время начала (moveStart)
  4. Если это false, это конец движения - запомните время окончания (moveFinish)и вычтите

Таким образом, вы можете накапливать время только на изменениях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...