В моей деятельности у меня есть один TextView под названием «senzosv». Я хочу, чтобы он показывал текущее значение с моего датчика освещенности. У меня есть следующий код.
public class Osvetlenie extends Activity implements OnItemSelectedListener, OnSeekBarChangeListener, SensorEventListener {
SensorManager sm;
Sensor proxSensor;
Sensor lighhtSens;
TextView tv = (TextView)findViewById(R.id.senzosv);
Это в моем onCreate:
...
sm = (SensorManager) getSystemService(SENSOR_SERVICE);
proxSensor =sm.getDefaultSensor(Sensor.TYPE_PROXIMITY);
lighhtSens = sm.getDefaultSensor(Sensor.TYPE_LIGHT);
sm.registerListener(this, proxSensor, SensorManager.SENSOR_DELAY_NORMAL);
sm.registerListener(this, lighhtSens, SensorManager.SENSOR_DELAY_NORMAL);
А вот методы onSensorChanged и onAccuracyChanged
public void onSensorChanged(SensorEvent event)
{
if( event.sensor.getType() == Sensor.TYPE_LIGHT)
{
tv.setText("value: " + event.values[0] + " lux" );
Toast.makeText(getApplicationContext(),"On SensorChanged"+ event.values[0],Toast.LENGTH_SHORT).show();
}
}
public void onAccuracyChanged(Sensor sensor, int accuracy) {
Log.d(ACCESSIBILITY_SERVICE,"onAccuracyChanged: " + sensor + ", accuracy: " + accuracy);
if(sensor.getType() == Sensor.TYPE_LIGHT){
Log.i("Sensor Changed", "Accuracy :" + accuracy);
}
}
Когда я запускаю свое приложение и пытаюсь начать это действие, я получаю нулевое исключение в LogCat и сообщение об ошибке: приложение неожиданно закрыто. Я тестирую свое приложение на Samsung Galaxy S II (GT-I9100). Что я сделал не так? Спасибо :)