Geomagnetic Data Analyzer Progetto sperimentale per il rilevamento e l'analisi dei precursori dei terremoti mediante l'aus...
Geomagnetic Data Analyzer <ul><li>Introduzione </li></ul><ul><li>   </li></ul><ul><li>Prevedere i terremoti con le moderne...
Geomagnetic Data Analyzer <ul><li>Scopo del progetto </li></ul><ul><li>  </li></ul><ul><li>  </li></ul><ul><li>Non e' anco...
Geomagnetic Data Analyzer <ul><li>Scopo del progetto </li></ul><ul><li>  </li></ul><ul><li>Il progetto ha lo scopo di dete...
Geomagnetic Data Analyzer <ul><li>Teoria di base </li></ul><ul><li>  </li></ul><ul><li>  </li></ul><ul><li>  </li></ul><ul...
Geomagnetic Data Analyzer <ul><li>Teoria di base </li></ul><ul><li>   </li></ul><ul><ul><li>Le anomalie gravitazionali son...
Geomagnetic Data Analyzer <ul><li>Utilizzo dei sensori dei dispositivi mobili </li></ul><ul><li>  </li></ul><ul><li>  </li...
Geomagnetic Data Analyzer <ul><li>Utilizzo dei sensori dei dispositivi mobili </li></ul><ul><li>  </li></ul><ul><li>   </l...
Geomagnetic Data Analyzer <ul><li>Utilizzo dei sensori dei dispositivi mobili </li></ul><ul><li>  </li></ul><ul><li>Inoltr...
Geomagnetic Data Analyzer <ul><li>Utilizzo dei sensori dei dispositivi mobili  </li></ul><ul><li>I dispositivi utilizzati ...
Geomagnetic Data Analyzer     Gestione dei sensori: Implementazione Utilizzo dei sensori con Android
Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Introduzione </li></ul><ul><li>  </li></ul><ul><li>Tutti i moderni...
Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>  </li></ul><ul><li>  </li></ul>...
Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>   </li></ul><ul><li>  </li></ul...
Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>  </li></ul><ul><li>android.hard...
Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>  </li></ul><ul><li>Nel nostro c...
Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>  </li></ul><ul><li>  </li></ul>...
Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>  </li></ul><ul><ul><li>&quot; T...
Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>  </li></ul><ul><ul><li>&quot; T...
Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>  </li></ul><ul><li>Non tutti i ...
Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>Nel nostro codice di esempio: </...
Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>android.hardware.SensorManager: ...
Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>La chiamata a  Context.getSystem...
Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>Nel nostro codice di esempio: </...
Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>android.hardware.SensorEvent: cl...
Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>  </li></ul>Viene usato il siste...
Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>SensorEvent, attraverso l'interf...
Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><ul><li>&quot; public long timestamp...
Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>Lista dei sensori di cui SensorE...
Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>  </li></ul><ul><ul><ul><li>&quo...
Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>Lista dei sensori di cui SensorE...
Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>  </li></ul><ul><ul><ul><li>&quo...
Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>Lista dei sensori di cui SensorE...
Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>Lista dei sensori di cui SensorE...
Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>Lista dei sensori di cui SensorE...
Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>  </li></ul><ul><li>@Override  p...
Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>android.hardware.SensorEventList...
Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>SensorEventListener mette a disp...
Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>  </li></ul><ul><li>SensorEventL...
Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>  </li></ul><ul><li>  </li></ul>...
Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>  </li></ul><ul><li>Nel nostro c...
Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>  </li></ul><ul><li>L'ultimo cam...
Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>  </li></ul><ul><li>  &quot; Sen...
Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>  </li></ul><ul><li>Se si decide...
Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>    </li></ul><ul><li>Nel nostro...
Upcoming SlideShare
Loading in …5
×

Android ed utilizzo_dei_sensori

2,070 views

Published on

Utilizzo dei sensori su piattaforma Android. Presentazione del progetto sperimentale al fine di utilizzare i sensori integrati a bordo dei dispositivi mobili per il rilevamento dei precursori dei terremoti. Con la raccolta dei dati, sara' possibile confermare le teorie di base e definire un modello deterministico atto alla individuazione e previsione degli eventi sismici con un anticipo variabile dai 10 giorni alle 48 ore.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,070
On SlideShare
0
From Embeds
0
Number of Embeds
72
Actions
Shares
0
Downloads
31
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Android ed utilizzo_dei_sensori

  1. 1. Geomagnetic Data Analyzer Progetto sperimentale per il rilevamento e l'analisi dei precursori dei terremoti mediante l'ausilio di dispositivi mobili. Utilizzo dei sensori con Android Contatto email per informazioni : danilo.riso@gmail.com
  2. 2. Geomagnetic Data Analyzer <ul><li>Introduzione </li></ul><ul><li>  </li></ul><ul><li>Prevedere i terremoti con le moderne tecnologie di massa. E' possibile? </li></ul><ul><li>  </li></ul><ul><li>Allo stato attuale la scienza ha identificato alcuni fenomeni che si manifesterebbero prima dei terremoti. Questi fenomeni scientificamente accertati sono le emissioni di gas radon dal terreno, l'innalzamento della temperatura dell'aria, aberrazioni del campo gravitazionale e del campo geomagnetico. </li></ul>
  3. 3. Geomagnetic Data Analyzer <ul><li>Scopo del progetto </li></ul><ul><li>  </li></ul><ul><li>  </li></ul><ul><li>Non e' ancora possibile prevedere i terremoti, ma la raccolta dei dati riguardanti i precursori dei terremoti e la successiva elaborazione potrebbero fornirci gli strumenti per definire un modello deterministico in grado di permetterci di prevedere un possibile evento sismico con un certo preavviso . </li></ul>
  4. 4. Geomagnetic Data Analyzer <ul><li>Scopo del progetto </li></ul><ul><li>  </li></ul><ul><li>Il progetto ha lo scopo di determinare se e' possibile identificare, raccogliere ed analizzare le anomalie geomagnetiche, gravitazionali e termiche utilizzando i sensori presenti all'interno dei dispositivi mobili, al fine di individuare i precursori dei terremoti. Sara' cosi' possibile costruire la piu' fitta rete di sensori intelligenti che sia mai esistita </li></ul>
  5. 5. Geomagnetic Data Analyzer <ul><li>Teoria di base </li></ul><ul><li>  </li></ul><ul><li>  </li></ul><ul><li>  </li></ul><ul><li>I fenomeni sismici sono accompagnati da: </li></ul><ul><li>  </li></ul><ul><ul><li>aberrazioni del campo geomagnetico locale (alterazioni rilevabili in un raggio di 300 chilometri); </li></ul></ul>
  6. 6. Geomagnetic Data Analyzer <ul><li>Teoria di base </li></ul><ul><li>  </li></ul><ul><ul><li>Le anomalie gravitazionali sono legate ai lenti spostamenti della crosta terrestre e quindi alla redistribuzione delle masse; </li></ul></ul><ul><li>  </li></ul><ul><ul><li>innalzamento della temperatura dell'aria; </li></ul></ul><ul><li>  </li></ul><ul><ul><li>emissione di gas radon. </li></ul></ul>
  7. 7. Geomagnetic Data Analyzer <ul><li>Utilizzo dei sensori dei dispositivi mobili </li></ul><ul><li>  </li></ul><ul><li>  </li></ul><ul><li>I dispositivi mobili odierni hanno un'ampia dotazione di sensori, che potrebbero essere utilizzati per rilevare alcune delle anomalie legate ai precursori dei terremoti: </li></ul><ul><li>  </li></ul><ul><ul><li>Il magnetometro per rilevare il campo geomagnetico sui tre assi X-Y-Z; </li></ul></ul>
  8. 8. Geomagnetic Data Analyzer <ul><li>Utilizzo dei sensori dei dispositivi mobili </li></ul><ul><li>  </li></ul><ul><li>  </li></ul><ul><li>  </li></ul><ul><ul><li>l'accelerometro per individuare le anomalie gravitazionali; </li></ul></ul><ul><li>  </li></ul><ul><ul><li>sensore di temperatura, qualora sia presente, per individuare le anomalie termiche. </li></ul></ul>
  9. 9. Geomagnetic Data Analyzer <ul><li>Utilizzo dei sensori dei dispositivi mobili </li></ul><ul><li>  </li></ul><ul><li>Inoltre verra' localizzato anche con precisione il punto esatto della manifestazione delle anomalie, mediante l'utilizzo del GPS, un componente oramai diffusissimo sui dispositivi di ultima generazione. </li></ul><ul><li>I dati riguardanti che provengono dai vari sensori vengono inviati verso un server, insieme ai dati di localizzazione GPS. </li></ul>
  10. 10. Geomagnetic Data Analyzer <ul><li>Utilizzo dei sensori dei dispositivi mobili </li></ul><ul><li>I dispositivi utilizzati saranno quelli equipaggiati con Android, sistema operativo che permette un certo grado di liberta' nell'accesso alle risorse a basso livello. Tratteremo quindi la gestione dei sensori in Android. </li></ul><ul><li>In futuro e' prevista l'estensione del progetto anche su piattaforma iPhone e Symbian, per rendere ancora piu' fitta la rete dei sensori. </li></ul>
  11. 11. Geomagnetic Data Analyzer     Gestione dei sensori: Implementazione Utilizzo dei sensori con Android
  12. 12. Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Introduzione </li></ul><ul><li>  </li></ul><ul><li>Tutti i moderni dispositivi mobili, oramai, possiedono una ricca dotazione di sensori.  </li></ul><ul><li>  </li></ul><ul><li>Questi si suddividono in sensori di movimento, di prossimita', di temperatura e campi magnetici. </li></ul>
  13. 13. Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>  </li></ul><ul><li>  </li></ul><ul><li>La piattaforma Android possiede una serie di interfacce e di classi di funzioni che permettono la gestione dei sensori  e del posizionamento globale (GPS) da parte dello sviluppatore. </li></ul>
  14. 14. Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>  </li></ul><ul><li>  </li></ul><ul><li>android.hardware.Sensor; </li></ul><ul><li>android.hardware.SensorManager; </li></ul><ul><li>  </li></ul><ul><li>android.hardware.SensorEvent; </li></ul><ul><li>  </li></ul><ul><li>android.hardware.SensorEventListener. </li></ul>
  15. 15. Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>  </li></ul><ul><li>android.hardware.Sensor: classe che rappresenta i sensori. Per ottenere da SensorManager una lista dei sensori disponibili si utilizza &quot; getSensorList(int) &quot;: </li></ul><ul><li>  </li></ul><ul><li>public List<Sensor> getSensorList (int type)  </li></ul><ul><li>  </li></ul><ul><li>  </li></ul>
  16. 16. Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>  </li></ul><ul><li>Nel nostro codice di esempio: </li></ul><ul><li>  </li></ul><ul><li>List<Sensor> sensoriMagnetici = mySensorManager.getSensorList(Sensor.TYPE_MAGNETIC_FIELD); </li></ul><ul><li>  </li></ul><ul><li>Questa chiamata crea una lista di sensori richiedendola a SensorManager (che deve essere istanziato prima), in questo caso il sensore di campi magnetici (Sensor.TYPE_MAGNETIC_FIELD). </li></ul><ul><li>  </li></ul>
  17. 17. Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>  </li></ul><ul><li>  </li></ul><ul><li>Le altre costanti utilizzate da Sensor per definire i vari sensori sono: </li></ul><ul><li>  </li></ul><ul><ul><li>&quot; TYPE_ACCELEROMETER &quot;: riferito all'accelerometro; </li></ul></ul><ul><li>  </li></ul><ul><ul><li>&quot; TYPE_ALL &quot;: riferito a tutti i sensori; </li></ul></ul><ul><li>  </li></ul>
  18. 18. Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>  </li></ul><ul><ul><li>&quot; TYPE_LIGHT &quot;: riferito al sensore di luminosita'; </li></ul></ul><ul><li>  </li></ul><ul><ul><li>&quot; TYPE_ORIENTATION &quot;: riferito al sensore di orientamento spaziale del dispositivo; </li></ul></ul><ul><li>  </li></ul><ul><ul><li>&quot; TYPE_PRESSURE &quot;: riferito al sensore di pressione;  </li></ul></ul><ul><li>  </li></ul>
  19. 19. Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>  </li></ul><ul><ul><li>&quot; TYPE_PROXIMITY &quot;: riferito al sensore di prossimita'; </li></ul></ul><ul><li>  </li></ul><ul><ul><li>&quot; TYPE_TEMPERATURE &quot;: riferito al sensore di temperatura; </li></ul></ul><ul><li>  </li></ul><ul><li>  </li></ul>
  20. 20. Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>  </li></ul><ul><li>Non tutti i sensori vengono inseriti all'interno dei dispositivi. </li></ul><ul><li>  </li></ul><ul><li>Per evitare errori indesiderati in fase di esecuzione del codice, e' necessario controllare l'effetiva disponibilita' del sensore che si intende utilizzare. </li></ul><ul><li>  </li></ul><ul><li>  </li></ul>
  21. 21. Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>Nel nostro codice di esempio: </li></ul><ul><li>  </li></ul><ul><li>  </li></ul><ul><li>List<Sensor> sensoriMagnetici = mySensorManager.getSensorList(Sensor.TYPE_MAGNETIC_FIELD);              </li></ul><ul><li>if ( sensoriMagnetici != null && sensoriMagnetici.size() != 0) { ... } </li></ul><ul><li>  </li></ul><ul><li>  In questo modo controlliamo l'esistenza del sensore desiderato evitando possibili errori di NullPointerException. </li></ul>
  22. 22. Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>android.hardware.SensorManager: classe che permette di accedere agli eventi ed alle informazioni che provengono dai sensori. </li></ul><ul><li>Un oggetto di tipo SensorManager si instanzia con la chiamata Context.getSystemService() con argomento SENSOR_SERVICE . </li></ul><ul><li>  </li></ul>
  23. 23. Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>La chiamata a Context.getSystemService() : </li></ul><ul><li>  </li></ul><ul><li>public abstract Object getSystemService (String name) </li></ul><ul><li>  </li></ul><ul><li>ritorna un riferimento a livello di sistema, del servizio che ci interessa. In questo caso il servizio SENSOR.SERVICE . </li></ul>
  24. 24. Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>Nel nostro codice di esempio: </li></ul><ul><li>  </li></ul><ul><li>final SensorManager mySensorManager = (SensorManager) this.getSystemService(Context.SENSOR_SERVICE);             List<Sensor> sensoriMagnetici = mySensorManager.getSensorList(Sensor.TYPE_MAGNETIC_FIELD);             if ( sensoriMagnetici != null && sensoriMagnetici.size() != 0) { </li></ul>
  25. 25. Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>android.hardware.SensorEvent: classe che rappresenta gli eventi e le informazioni che provengono dai sensori. </li></ul><ul><li>  </li></ul>
  26. 26. Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>  </li></ul>Viene usato il sistema di coordinate delle OpenGL ES per determinare su quale asse si sia manifestato l'evento. L'origine degli assi e' fissato in basso a sinistra (nelle API di gestione 2D e' invece fissato in alto a sinistra). Guardando frontalmente lo schermo, l'asse Y punta verso l'alto, l'asse X verso destra e l'asse Z verso l'osservatore.
  27. 27. Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>SensorEvent, attraverso l'interfaccia SensorEventListener, ci fornisce diverse informazioni riguardanti i dati che provengono dai sensori, nel momento della registrazione degli eventi. </li></ul><ul><ul><li>&quot; public int accuracy &quot;: l'accuratezza del rilevamento dell'evento da parte del sensore; </li></ul></ul><ul><li>  </li></ul><ul><ul><li>&quot; public Sensor sensor &quot;: il sensore che ha generato l'evento; </li></ul></ul><ul><li>  </li></ul><ul><li>  </li></ul>
  28. 28. Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><ul><li>&quot; public long timestamp &quot;: l'istante di tempo nel quale si e' manifestato l'evento, in nanosecondi; </li></ul></ul><ul><li>  </li></ul><ul><ul><li>&quot; public final float[] values &quot;: un'array i cui vari elementi cambiano in dimensione e contenuto in base al sensore monitorato; </li></ul></ul><ul><li>  </li></ul><ul><li>  </li></ul>
  29. 29. Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>Lista dei sensori di cui SensorEvent fornisce i dati </li></ul><ul><li>&quot; Sensor.TYPE_ORIENTATION &quot;: restituisce un'array di tre valori, espressi in gradi: </li></ul><ul><li>  </li></ul><ul><ul><ul><li>&quot; value[0] &quot;: l'azimuth, ovvero l'angolo compreso tra la direzione del Nord magnetico e l'asse Y del dispositivo, intorno all'asse Z del dispositivo; </li></ul></ul></ul><ul><li>  </li></ul>
  30. 30. Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>  </li></ul><ul><ul><ul><li>&quot; value[1] &quot;: il pitch, ovvero la rotazione intorno all'asse X, con valori che variano da -180 a 180 gradi. Il valore e' considerato positivo se l'asse Z si dirige nella direzione dell'asse Y;    </li></ul></ul></ul><ul><ul><li>  </li></ul></ul><ul><ul><ul><li>&quot; value[2] &quot;: il roll, ovvero la rotazione intorno all'asse Y, con valori che variano da -90 a 90 gradi. Il valore e' considerato positivo se l'asse X si allontana dalla direzione dell'asse Z. </li></ul></ul></ul>
  31. 31. Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>Lista dei sensori di cui SensorEvent fornisce i da ti </li></ul><ul><li>&quot; Sensor.TYPE_ACCELEROMETER &quot;: restituisce un'array di tre valori, espressi m/s^2. Rappresentano l'accelerazione a cui e' sottoposto il dispositivo lungo i tre assi, meno l'accelerazione di gravita': </li></ul><ul><li>  </li></ul><ul><ul><li>&quot; value[0] &quot;: l'accelerazione lungo l'asse X, meno l'accelerazione di gravita'; </li></ul></ul><ul><li>  </li></ul>
  32. 32. Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>  </li></ul><ul><ul><ul><li>&quot; value[1] &quot;: l'accelerazione lungo l'asse Y, meno l'accelerazione di gravita';   </li></ul></ul></ul><ul><ul><li>  </li></ul></ul><ul><ul><ul><li>&quot; value[2] &quot;: l'accelerazione lungo l'asse Z, meno l'accelerazione di gravita'. </li></ul></ul></ul>
  33. 33. Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>Lista dei sensori di cui SensorEvent fornisce i dati </li></ul><ul><ul><li>&quot; Sensor.TYPE_MAGNETIC_FIELD &quot;: restituisce un'array di tre valori, espressi microtesla. Rappresentano il campo magnetico ambientale a cui e' sottoposto il dispositivo lungo i tre assi X,Y e Z: </li></ul></ul><ul><li>  </li></ul>
  34. 34. Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>Lista dei sensori di cui SensorEvent fornisce i dati </li></ul><ul><ul><li>&quot; Sensor.TYPE_LIGHT &quot;: restituisce un'array di un valore, value[0] , ed esprime il livello di luminosita' ambientale in lux (SI); </li></ul></ul><ul><li>  </li></ul>
  35. 35. Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>Lista dei sensori di cui SensorEvent fornisce i dati </li></ul><ul><ul><li>&quot; Sensor.TYPE_PROXIMITY &quot;: restituisce un'array di un valore, value[0] , ed esprime la distanza dall'oggetto in cm; </li></ul></ul><ul><li>  </li></ul><ul><li>Nel nostro codice di esempio: </li></ul>
  36. 36. Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>  </li></ul><ul><li>@Override  public void onSensorChanged( SensorEvent event ) {             magneticAvgValues[0] = (magneticAvgValues[0]*nMagneticValues + event.values[0] )/((float)nMagneticValues+1);             magneticAvgValues[1] = (magneticAvgValues[1]*nMagneticValues + event.values[1] )/((float)nMagneticValues+1);             magneticAvgValues[2] = (magneticAvgValues[2]*nMagneticValues + event.values[2] )/((float)nMagneticValues+1);             nMagneticValues++;         }    };                 } </li></ul>
  37. 37. Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>android.hardware.SensorEventListener: interfaccia, usata per ricevere le notifiche dalla classe SensorManager quando i valori provenienti dai sensori cambiano. </li></ul>
  38. 38. Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>SensorEventListener mette a disposizione 2 metodi: </li></ul><ul><ul><li>&quot; abstract void onAccuracyChanged(Sensor sensor, int accuracy) &quot;: chiamato quando l'accuratezza del sensore cambia; </li></ul></ul><ul><li>  </li></ul><ul><ul><li>&quot; abstract void onSensorChanged(SensorEvent event) &quot;: chiamato quando i dati dei sensori cambiano. </li></ul></ul><ul><li>Si definisce l'interfaccia, nel nostro codice di esempio: </li></ul>
  39. 39. Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>  </li></ul><ul><li>SensorEventListener magneticiListener = new SensorEventListener() {   </li></ul><ul><li>         @Override         public void onAccuracyChanged(Sensor sensor, int accuracy) {                     }         </li></ul><ul><li>         @Override         public void onSensorChanged(SensorEvent event) { ... } </li></ul><ul><li>  </li></ul><ul><li>};   </li></ul><ul><li>        </li></ul>
  40. 40. Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>  </li></ul><ul><li>  </li></ul><ul><li>Si aggancia l'interfaccia SensorEventListener all'istanza della classe SensorManager con il metodo </li></ul><ul><li>boolean registerListener(SensorEventListener listener, Sensor sensor, int rate)   </li></ul><ul><li>  </li></ul><ul><li>per permettere a quest'ultima di notificare le modifiche ai valori che provengono dai sensori. </li></ul><ul><li>  </li></ul><ul><li>        </li></ul>
  41. 41. Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>  </li></ul><ul><li>Nel nostro codice di esempio: </li></ul><ul><li>if ( sensoriMagnetici != null && sensoriMagnetici.size() != 0) { </li></ul><ul><li>     for( final Sensor sensore : sensoriMagnetici) {          mySensorManager.registerListener(magneticiListener, sensore, SensorManager.SENSOR_DELAY_FASTEST); </li></ul><ul><li>                     ... </li></ul><ul><li>                 } </li></ul><ul><li>            } </li></ul>
  42. 42. Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>  </li></ul><ul><li>L'ultimo campo riguarda il rate con il quale si intende effettuare il campionamento: </li></ul><ul><li>  </li></ul><ul><li>&quot; SensorManager.SENSOR_DELAY_FASTEST &quot;:  il piu' velocemente possibile; </li></ul><ul><li>  </li></ul><ul><li>&quot; SensorManager.SENSOR_DELAY_GAME &quot;: adatto per i giochi; </li></ul>
  43. 43. Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>  </li></ul><ul><li>  &quot; SensorManager.SENSOR_DELAY_NORMAL &quot;:  utilizzato generalmente per i cambiamenti di orientamento dello schermo; </li></ul><ul><li>  </li></ul><ul><li>&quot; SensorManager.SENSOR_DELAY_UI &quot;: adatto per le user interface; </li></ul>
  44. 44. Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>  </li></ul><ul><li>Se si decide di inserire il codice di gestione dei sensori all'interno di un'Activity, e' importante ricordarsi di chiudere il listener quando si chiude l'applicazione o quando e' in onPause(), usando </li></ul><ul><li>  </li></ul><ul><li>unregisterListener(SensorEventListener listener, Sensor sensor)   </li></ul><ul><li>  </li></ul><ul><li>Si evitera' di scaricare la batteria quando l'applicazione non e' in uso </li></ul><ul><li>  </li></ul><ul><li>        </li></ul>
  45. 45. Geomagnetic Data Analyzer <ul><li>Gestione dei sensori: Implementazione </li></ul><ul><li>   </li></ul><ul><li>Nel nostro codice di esempio: </li></ul><ul><li>for( final Sensor sensore : sensoriMagnetici) {                      mySensorManager.unregisterListener(magneticiListener, sensore); </li></ul><ul><li>                      </li></ul><ul><li>                     } </li></ul><ul><li>  </li></ul><ul><li>        </li></ul>

×