0

我正在尝试计算波谷的数量,即传感器值急剧下降的次数,然后上升以实现向下(将手靠近手机,然后将其拿走)手势。这就是我正在尝试的。

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]);
        }
    }

这是正确的方法吗?每当我尝试在手机中运行该应用程序时,它似乎就会崩溃。调试时,这是由于calculateTrough 方法中的forloop,但我无法弄清楚原因。我还应该怎么做?

4

0 回答 0