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等时它也会增加
有什么方法可以避免这种情况吗?
答案 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;
}
}