Java Android光线传感器未正确检测周围光线

Java Android光线传感器未正确检测周围光线,java,android,light-sensor,Java,Android,Light Sensor,我在尝试为Android应用程序制作光传感器时遇到了一些问题。这是我的密码: @Override protected void onCreate(Bundle savedInstanceState) { sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); Sensor lightSensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT)

我在尝试为Android应用程序制作光传感器时遇到了一些问题。这是我的密码:

@Override
protected void onCreate(Bundle savedInstanceState) {
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
    Sensor lightSensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);

    if (lightSensor == null) {
        Toast.makeText(MainActivity.this, "No Light Sensor Found! ",
                Toast.LENGTH_LONG).show();
    } else {
        float max = lightSensor.getMaximumRange();
        sensorManager.registerListener(this, lightSensor,
                SensorManager.SENSOR_DELAY_NORMAL);
    }}

protected void onResume() {
    super.onResume();
    // register this class as a listener for the lightSensor
    sensorManager.registerListener(this,
            sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT),
            SensorManager.SENSOR_DELAY_NORMAL);
}

@Override
protected void onPause() {
    // unregister listener
    super.onPause();
    sensorManager.unregisterListener(this);
}

@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {

}

// called when sensor value have changed
@Override
public void onSensorChanged(SensorEvent event) {
    // The light sensor returns a single value.
    // Many sensors return 3 values, one for each axis.
    if (event.sensor.getType() == Sensor.TYPE_LIGHT) {
        float currentLight = event.values[0];
        if (currentLight < 1) {
            tVCurrentLight.setText("No Light");
        } else if (currentLight < 5) {
            tVCurrentLight.setText("Dim:"
                    + String.valueOf(currentLight));
        } else if (currentLight < 10) {
            tVCurrentLight.setText("Normal:"
                    + String.valueOf(currentLight));
        } else if (currentLight < 100) {
            tVCurrentLight.setText("Bright(Room):"
                    + String.valueOf(currentLight));
        } else
            tVCurrentLight.setText("Bright(Sun):"
                    + String.valueOf(currentLight));
    }
}
@覆盖
创建时受保护的void(Bundle savedInstanceState){
sensorManager=(sensorManager)getSystemService(Context.SENSOR\u服务);
Sensor lightSensor=sensorManager.getDefaultSensor(传感器.类型\灯);
如果(光传感器==null){
Toast.makeText(MainActivity.this,“未找到光传感器!”,
Toast.LENGTH_LONG).show();
}否则{
float max=光传感器。getMaximumRange();
sensorManager.registerListener(此,lightSensor,
传感器管理器。传感器延迟(正常);
}}
受保护的void onResume(){
super.onResume();
//将此类注册为lightSensor的侦听器
sensorManager.registerListener(此,
sensorManager.getDefaultSensor(传感器类型_灯),
传感器管理器。传感器延迟(正常);
}
@凌驾
受保护的void onPause(){
//取消注册侦听器
super.onPause();
sensorManager.UnregistereListener(此);
}
@凌驾
精度更改时的公共无效(传感器,int精度){
}
//传感器值更改时调用
@凌驾
传感器更改时的公共无效(传感器事件){
//光传感器返回单个值。
//许多传感器返回3个值,每个轴一个。
if(event.sensor.getType()==sensor.TYPE\u LIGHT){
float currentLight=事件值[0];
如果(当前灯<1){
tVCurrentLight.setText(“无灯”);
}否则如果(当前灯<5){
tVCurrentLight.setText(“暗:
+字符串.valueOf(currentLight));
}否则如果(当前灯<10){
tVCurrentLight.setText(“正常:
+字符串.valueOf(currentLight));
}否则如果(当前灯<100){
tVCurrentLight.setText(“明亮(房间):”
+字符串.valueOf(currentLight));
}否则
tVCurrentLight.setText(“明亮(太阳):”
+字符串.valueOf(currentLight));
}
}
我遇到的问题是,它只能检测到两种状态,即明亮(房间):10.0明亮(太阳):100.0。有没有办法修复它,使它能够根据环境显示所有5种状态

我在currentLight上打印了一份日志,当我用手覆盖scren时,我得到的结果只有10.0,而当我刚放进一个房间时,得到的结果是100.0。你知道为什么没有其他价值观吗?
提前感谢。

您使用的是什么设备?对于不同的供应商,传感器的性能会有所不同。我使用的是三星Galaxy S2。