メインスレッドが一時停止している間にセンサーから値を取得する方法はありますか?
目標: 光センサーを登録する必要があります。メイン スレッドは 10 秒間待機し、10 秒後に平均値を取得する必要があります。
問題: メイン スレッドで待機する必要があるため、しばらくまたはスリープすると、センサーは値を取得しません。
試したこと: センサーを別のスレッドまたは asynctask に登録しようとしましたが、メイン スレッドを 10 秒間一時停止しても何も起こりませんでした (スリープ、ハンドラー、しばらく、結合で試しました)。ユーザーから、Handler と onPause/onResume を使用するよう提案されました。私の実際のコードはこれですが、メインスレッドが待機している間はまだ何も得られません:
public class MyActivity
{
private Lux light; //Lux implements SensorEventListener
private SensorManager mSensorManager;
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.listeners);
mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
light=new Lux();
onPause();
}
@Override
protected void onResume()
{
mSensorManager.unregisterListener(light, mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT));
light.getAverage();
super.onResume();
}
@Override
protected void onPause()
{
super.onPause();
mSensorManager.registerListener(light, mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT),SensorManager.SENSOR_DELAY_FASTEST);
Handler h=new Handler();
h.postDelayed(myTask, 10000);
}
private Runnable myTask = new Runnable()
{
public void run()
{
onResume();
}
};
}
私を助けてください。