首页 > 解决方案 > 如何减慢光传感器的监听速度?

问题描述

我想限制光传感器检测光的频率,以节省电池电量和 CPU 使用率。

在阅读了 SO 并亲自尝试之后,我发现更改registerListener方法的参数无济于事。

所以我猜下一个赌注是让它进入睡眠状态,或者每次传感器感应到光时等待?我该怎么做?我试着把wait(2000);它放进去,但这给出了一个错误。

这是光传感器代码:

SensorManager sm = (SensorManager) getSystemService(SENSOR_SERVICE);

Sensor light = sm.getDefaultSensor(Sensor.TYPE_LIGHT);

SensorEventListener listener = new SensorEventListener() {

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

          @Override
          public void onSensorChanged(SensorEvent event) {
                //Here is where I want to do my stuff   
          }

};

sm.registerListener(listener, light, SensorManager.SENSOR_DELAY_NORMAL);

标签: javaandroid

解决方案


以最短的时间间隔做你的事情:

    private final long minimumInterval = 100;
    private long lastRefresh;

    SensorEventListener listener = new SensorEventListener() {

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

        }

        @Override
        public void onSensorChanged(SensorEvent event) {
            long timeMillis = System.currentTimeMillis();
            if (lastRefresh - timeMillis > minimumInterval) {
                lastRefresh = timeMillis;
                //do stuff
            }
        }

    };

推荐阅读