所以我正在寻找一种方法来获得按钮按下时光传感器的当前值(显然是在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)
{
}
}
}
我也有这个代码使按钮调用函数
<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;
?
答案 0 :(得分:8)
如上所述here,无法直接获取当前传感器值,而一些更新版本的Android会在注册器注册后立即生成onSensorChanged事件(允许您获取基线),早期版本没有。因此,您唯一能做的就是希望用户运行更新版本的Android或更改值,然后从onSensorChanged(例如)中的event.values [0]中检索当前的勒克斯值:
public void onSensorChanged(SensorEvent event)
{
if( event.sensor.getType() == Sensor.TYPE_LIGHT)
{
currentLux = event.values[0];
if (currentLux > maxLux)
maxLux = currentLux;
}
}
(将maxLux和currentLux更改为浮点数后)。这就留下了根据按下按钮检索当前值的问题,这可以通过查看按下按钮时currentLux的值来完成。