获取光传感器值

Posted

技术标签:

【中文标题】获取光传感器值【英文标题】:Getting Light Sensor Value 【发布时间】:2011-09-20 00:07:22 【问题描述】:

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

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_ android:id="@+id/widget35" android:text="Start" android:layout_ android:layout_x="112dp" android:layout_y="249dp"  android:onClick="onButtonDown"></Button>

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

【问题讨论】:

【参考方案1】:

如 here 所述,无法直接获取当前传感器值,而一些较新版本的 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 的值来完成。

【讨论】:

感谢您的帮助!只有当它发生变化时,我才需要一个常量值。我对你的代码做了一些调整。 maxLux 将是基于原始校准的常数(按下按钮的用途),然后屏幕亮度将根据 currentLux 的百分比从 maxLux 改变

以上是关于获取光传感器值的主要内容,如果未能解决你的问题,请参考以下文章

光传感器和距离传感器代码分析

结构光传感器编程(二十一)

Android 传感器开发详解

图像去噪的意义是啥?

SL sensor :一种基于结构光传感器开源且实时用于高精度建筑机器人重建应用方案...

SL sensor :一种基于结构光传感器开源且实时用于高精度建筑机器人重建应用方案...