0

私のコードはこれです。

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 秒程度) 待ってから、値の合計を確認する必要があります。問題は、スリープ、ループなどを使用すると、センサーが値を取得しないことです。私に何ができる?私を助けてください。

4

1 に答える 1

0

onSensorChanged問題は、メインスレッドを一時停止していて、そのようにして関数が呼び出されなかったことだと思います。リスナーを に登録し、 Handler.postDelayed(Runnable, long)onResumeを使用して、指定された遅延の後に表示コードを実行する必要があります。

于 2013-11-13T10:31:31.043 に答える