Получение Датчик Света Значение

поэтому я ищу способ получить текущее значение датчика света (в люксе, очевидно) при нажатии кнопки. Вот код, который я использую для реализации управления датчиком света

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

     }
 }
 }

у меня также есть этот код делает кнопку для вызова функции

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

как я получу текущее значение lux, пока приложение работает в фоновом режиме, и как я получу и сохраню текущее значение lux на кнопке нажмите в int maxLux;?

1 ответов


Как отмечает здесь, невозможно напрямую получить текущее значение датчика и, в то время как некоторые более поздние версии Android будут генерировать событие onSensorChanged, как только слушатель зарегистрирован (что позволяет получить базовую линию), более ранние версии этого не делают. Таким образом, единственное, что вы можете сделать, это надеяться, что пользователь либо работает более позднюю версию Android или что значение изменяется, а затем получить текущее значение lux из события.значения[0] внутри onSensorChanged (например) :

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

(после изменения maxLux и currentLux на поплавки). Затем остается проблема извлечения текущего значения на основе нажатия кнопки, что можно сделать, посмотрев на значение currentLux во время нажатия кнопки.