获得光传感器价值

Cis*_*ran 6 java controls android sensor

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

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)
     {

     }
 }
 }
Run Code Online (Sandbox Code Playgroud)

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

<Button android:layout_width="122px" android:id="@+id/widget35" android:text="Start" android:layout_height="wrap_content" android:layout_x="112dp" android:layout_y="249dp"  android:onClick="onButtonDown"></Button>
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*ark 8

如前所述在这里,它是不可能直接将电流传感器值,而更近一些的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;
     }
 }
Run Code Online (Sandbox Code Playgroud)

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