【问题标题】: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_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>

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

【问题讨论】:

    标签: java android controls sensors


    【解决方案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 改变
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-21
    相关资源
    最近更新 更多