Home > Guide e tutorial per Android > Guida programmazione Android – Lezione 15: LightSensor

Guida programmazione Android – Lezione 15: LightSensor

Lezione15Continuiamo la nostra esplorazione dei sensori vedendo come gestire un “lightsensor”, cioè un sensore di luce.

Creiamo un nuovo progetto e lo chiamiamo stavolta lightsensor.

Lo scopo dell’applicazione sarà cambiare l’immagine di sfondo a seconda della luminosità rilevata. Quindi creiamo come già visto la nostra cartella drawable e inseriamo 2 immagini, giorno e notte.

Creiamo ora il layout, inserendo una delle 2 immagini (che diventerà quindi quella di default). Noi abbiamo scelto ad esempio quella del giorno. Cambiamo inoltre l’id dell’imageview in giorno_notte per semplicità.

screen layout giorno

Spostiamoci ora nella parte Java, aprendo il file MainActivity.java e scriviamo questo codice:

public class MainActivity extends Activity implements SensorEventListener{
	private SensorManager sensorManager;
	private ImageView giorno_notte;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
		sensorManager.registerListener(this, sensorManager.getDefaultSensor( Sensor.TYPE_LIGHT ),SensorManager.SENSOR_DELAY_NORMAL );
		giorno_notte=(ImageView)findViewById(R.id.giorno_notte);

	}

	@Override
	public void onSensorChanged(SensorEvent event) {
		if (event.sensor.getType() == Sensor.TYPE_LIGHT) {
			//il sensore di luce ha cambiato stato
			float luminosità=event.values[0];
			if(luminosità<50){
				//è buio
				giorno_notte.setImageResource(R.drawable.notte);
			}
			else{
				//non è buio
				giorno_notte.setImageResource(R.drawable.giorno);
			}
		}

	}	

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

	}

}

Come potete notare è tutto molto simile all’applicazione dell’accelerometroUnica cosa che cambia è che stavolta abbiamo inserito TYPE_LIGHT come tipo di sensore (cioè un lightsensor), e che invece di modificare delle testView modifichiamo l’immagine visualizzata dalla ImageView. Riportiamo qui un video-esempio dell’applicazione:

Puoi guardare tutte le lezioni passate consultando l’indice del corso di programmazione android