У меня есть требование, когда значения датчика изменены, необходимо отобразить некоторые данные соответственно.Проблема с методом OnSensorChanged()
В настоящее время я выполняю, если есть изменение 10 градусов для текущего значения азимута и предыдущего значения азимута, затем выполните некоторые действия.
Проблема заключается в том, что каждые 10 градусов меняются (как я упоминал в коде), действие выполняется. Я не хочу, чтобы это действие выполнялось каждые 10 градусов. всякий раз, когда устройство останавливается вращением, следует учитывать азимутальное значение и действие должно выполняться. Я также использовал счетчик. Но бесполезно. Это убивает меня.
Вот мой код,
public void onSensorChanged(SensorEvent paramAnonymousSensorEvent) {
CameraSearch.this.azimuth = paramAnonymousSensorEvent.values[0];
CountDownTimer myCountDown = new CountDownTimer(2000, 1000) {
public void onTick(long millisUntilFinished) {
// update the UI with the new count
}
public void onFinish() {
Log.d("","Counter finished");
if (Math.abs(CameraSearch.this.azimuth - previousAzimuth) >= 10) {
Log.d("", "Azimuth: " + CameraSearch.this.azimuth
+ "PreviousAzimuth: " + previousAzimuth);
CameraSearch.this.findScreenOrientation();
previousAzimuth = CameraSearch.this.azimuth;
}
}
};
// start the countDown
myCountDown.start();
}
};
Пожалуйста, предложите мне решение. Когда пользователь перестает вращать устройство, тогда необходимо принять текущее азимутальное значение и выполнить действие. Пожалуйста, помогите мне!
Спасибо заранее!
@ chochop, спасибо, что ответили !! Это мне непонятно. Есть ли какая-либо другая методология, хотя идеи достаточно. Я не могу реализовать эти алгоритмы, нужно учитывать фактор времени. – Mahe
@ Махе, как я уже сказал, я не могу придумать более простого решения. Если вы недовольны попыткой реализовать свой ответ, просто подождите, пока другой человек ответит – chopchop