ANDROID: Как рассчитать разницу между двумя значительными изменениями в данных датчика освещенности?
Я пытаюсь рассчитать количество впадин, то есть количество раз, когда значение датчика резко падает, а затем вверх, чтобы достичь понижения (поднося руку к телефону, а затем убирая ее) жестом руки. Это то, что я пытаюсь.
protected void onCreate(Bundle savedInstanceState) {
..........
.........
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
printValue();
new Handler().postDelayed(this, 5000);
}
}, 5000);
}
public void printValue(){
textView.setText(" "+arr);
int count = calculateTrough();
textView1.setText("Number of troughs: "+count);
arr.clear();
}
public int calculateTrough(){
int count = 0;
if(arr == null){
count = 0;
}
else {
for (int i = 0; i < arr.size(); i++) {
if (arr.get(i) - arr.get(i + 1) > 5.00 && arr.get(i + 2) - arr.get(i + 1) > 5.00)
count++;
}
}
return count;
}
@Override
public void onSensorChanged(SensorEvent sensorEvent) {
if(sensorEvent.sensor.getType() == Sensor.TYPE_LIGHT){
arr.add(sensorEvent.values[0]);
}
}
Это правильный подход? Приложение, кажется, падает, когда я пытаюсь запустить его на своем телефоне. После отладки это происходит из-за forloop в методе Calculate, но я не могу понять, почему. Как еще мне это сделать?