光传感器在循环期间不会获得值

时间:2013-11-13 10:23:04

标签: java android sensor android-sensors

我的代码是这样的。

public void foo()
    {
            mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
            mSensorManager.registerListener(this, mSensorManager
                    .getDefaultSensor(Sensor.TYPE_LIGHT),
                    SensorManager.SENSOR_DELAY_FASTEST);
             int i=0;
             while(i<10000) //sleep, or something else
                     i++;
             //print the currentLux's value
    }

-

 public void foo()
    {
            new lt().start()
            int i=0;
            while(i<10000) //sleep, or something else
                    i++;
            //print the currentLux's value
    }
class lt extends Thread
{
    public void run()
    {
        mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
        mSensorManager.registerListener(this, mSensorManager
                .getDefaultSensor(Sensor.TYPE_LIGHT),
                SensorManager.SENSOR_DELAY_FASTEST);
    }
}

传感器事件就是这样:

public final void onSensorChanged(SensorEvent event) 
{
    if( event.sensor.getType() == Sensor.TYPE_LIGHT)
    {
        currentLux+=event.values[0];
    }   
}

这是我的问题。我需要创建光传感器,然后稍等一下(类似于5秒),然后检查值的总和。问题是,如果我使用睡眠,循环或其他东西,传感器不会获得任何值。我能做什么?请帮帮我。

1 个答案:

答案 0 :(得分:0)

我认为问题在于您正在暂停主线程,而onSensorChanged函数从未调用过。您应该在onResume中注册您的监听器,并使用Handler.postDelayed(Runnable, long)在指定的延迟后执行显示代码。