获得光传感器价值

所以我正在寻找一种方法来获得按钮按下时光传感器的当前值(显然是勒克斯)。 这是我用来实现光传感器控制的代码

public class SensorActivity extends Activity implements SensorEventListener { private final SensorManager mSensorManager; private final Sensor mLight; int minLux = 0; int currentLux = 0; int maxLux; public SensorActivity() { mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE); mLight = mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT); } protected void onResume() { super.onResume(); mSensorManager.registerListener((SensorEventListener) this, mLight, SensorManager.SENSOR_DELAY_NORMAL); } protected void onPause() { super.onPause(); mSensorManager.unregisterListener((SensorListener) this); } public void onAccuracyChanged(Sensor sensor, int accuracy) { if(sensor.getType() == Sensor.TYPE_LIGHT) { } } public void onSensorChanged(SensorEvent event) { if( event.sensor.getType() == Sensor.TYPE_LIGHT) { } } } 

我也有这个代码使按钮调用一个函数

  

当应用程序在后台运行时,我如何获得当前的勒克斯值,以及如何将按钮按下的当前勒克斯值存储到int maxLux;

如此处所述,不可能直接获取当前传感器值,而一些更新版本的Android将在监听器注册后立即生成onSensorChanged事件(允许您获得基线),早期版本不应该吨。 因此,您唯一能做的就是希望用户运行更新版本的Android或者更改值,然后从onSensorChanged中的event.values [0]中检索当前的lux值(例如):

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

(将maxLux和currentLux更改为浮动后)。 这就留下了根据按下按钮检索当前值的问题,这可以通过查看按下按钮时currentLux的值来完成。