在SensorManager中使用CountDownTimer的最佳解决方案(晴雨表)

时间:2015-08-20 00:46:34

标签: android countdowntimer sensormanager

我需要一些简单的逻辑来解决这个问题。所以这就是我想要的:

气压计范围的值为etc 31,xxxx - 33,xxxx。因此,如果气压计值超出范围31,xxxx - 33,xxxx,则倒数计时器开始计数。

但如果值再次返回内部,则countdowntimer将为onPause()。当值超出该范围时,倒数计时器将重新开始。等等。

因此,如果计时器是onFinish(),系统会给出一些警告,但如果没有完成,系统将不会给出任何响应。

这是我的代码:

public SensorEventListener sensorEventListener = new SensorEventListener() {
        @Override
        public void onSensorChanged(SensorEvent event) {
            float pressure_value = 0.0f;
            float height = 0.0f;
            if (Sensor.TYPE_PRESSURE == event.sensor.getType())
            {
                pressure_value = event.values[0];
                height = SensorManager.getAltitude(SensorManager.PRESSURE_STANDARD_ATMOSPHERE, pressure_value);
            }
            value = String.valueOf(height);
            valueOftxtBaro = Float.parseFloat(value);
        }

        @Override
        public void onAccuracyChanged(Sensor sensor, int accuracy) {

        }
    };

1 个答案:

答案 0 :(得分:0)

首先声明时间的全局变量和Timer,例如30secs。

private int time = 30000;
private CountDownTimer cdt;

将其乘以1000以使其为30000.现在,在传感器内部启动计时器时,它会达到您的范围。

  cdt =  new CountDownTimer(time, 1000, getActivity().getApplicationContext()) {

                @Override
                public void onTick(long millisUntilFinished) {
                    super.onTick(millisUntilFinished);

                    time = millisUntilFinished;

                }


                @Override
                public void onFinish() {
                    super.onFinish();
                }
            }.start();

当它没有得到范围时

 if(cdt != null){
 cdt.cancel();
 }

当计时器用完时,你可以用onFinish方法做任何你想做的事。