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));
}
}
私が抱えていた問題は、 Bright(Room): 10.0とBright(Sun): 100.0の 2 つのステータスしか検出できなかったことです。環境によっては5つのステータスすべてを表示できるように修正する方法はありますか?
現在のライトでログを印刷しました。得られた結果は、画面を手で覆ったときは 10.0 で、部屋に置いたときは 100.0 でした。他の値を取得していない理由はありますか? 前もって感謝します。