Java Android光线传感器未正确检测周围光线
我在尝试为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)
@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。