
Continuiamo 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à.
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’accelerometro. Unica 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