我的代码是这样的。
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秒),然后检查值的总和。问题是,如果我使用睡眠,循环或其他东西,传感器不会获得任何值。我能做什么?请帮帮我。
答案 0 :(得分:0)
我认为问题在于您正在暂停主线程,而onSensorChanged
函数从未调用过。您应该在onResume
中注册您的监听器,并使用Handler.postDelayed(Runnable, long)在指定的延迟后执行显示代码。