当传感器值超过某个值时,如何更新计数器?

时间:2014-10-02 09:41:28

标签: android sensor

public void onSensorChanged(SensorEvent event) {        
     if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD) {
         y = (int) Math.sqrt((event.values[0]*event.values[0]) + 
                   (vent.values[1]*event.values[1]) + 
                   (event.values[2]*event.values[2]));

         if (y > maxval) {
            count++;
            tv1.setText(Integer.toString(count));
         }
     }
}

现在,当传感器读数改变并且y变为>时,显然计数增量。 MAXVAL。这是不合需要的,因为即使当y> maxval和传感器值刚刚改变时计数也会增加,例如考虑maxval = 100.当y> 100时,计数增加,好吧。但是当y值从100变为101等时它也会增加

有什么方法可以避免这种情况吗?

1 个答案:

答案 0 :(得分:2)

如果您希望它只有在超过maxval时才会触发,您需要跟踪它之前的位置。这样的事情应该有效。

int lastVal = 0;

public void onSensorChanged(SensorEvent event) {        
    if(event.sensor.getType()==Sensor.TYPE_MAGNETIC_FIELD){
        y=(int)Math.sqrt((event.values[0]*event.values[0])+(event.values[1]*event.values[1])+(event.values[2]*event.values[2]));

        if(y>maxval && lastVal <= maxval){
            count++;
            tv1.setText(Integer.toString(count));
        }
        lastVal = y;
    }
}