SlideShare une entreprise Scribd logo
1  sur  15
Télécharger pour lire hors ligne
Android e sensori
Il mondo percepito dallo smartphone
Quali sono?
• Accelerometro;
• Temperatura ambiente;
• Gravità;
• Giroscopio;
• Luce;
• Accelerazione lineare;
• Campo magnetico;
• Orientamento;
• Pressione;
• Prossimità
• Umidità relativa;
• Vettore di rotazione;
• Temperatura.
Classificazione
• Sensori di movimento:
– accelerometro, gravità, giroscopio, accelerazione
lineare.
• Sensori ambientali:
– temperatura ambiente, luce, pressione, umidità
relativa, temperatura.
• Sensori di posizione:
– campo magnetico, orientamento, prossimità,
vettore di rotazione.
Alcune considerazioni
• A seconda del dispositivo possono esserci altri
sensori (esempio, Galaxy note 4 e il sensore
raggi UV);
• Recenti API hanno introdotto sensori legati al
benessere (battito cardiaco) o al movimento
dell'utente (step);
SensorManager
• Classe che permette di ottenere istanze di
sensori, registrare/stoppare un callback e
altro.
SensorManager sManager =
(SensorManager)getSystemService(Context.SENSOR_SERVICE);
Ottenere i sensori
• Ottenere tutti i sensori disponibili:
– List<Sensor> deviceSensors = sManager.getSensorList(Sensor.TYPE_ALL);
• Ottenere un sensore specifico:
– Sensor sensor = sManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
– Se ritorna null il dispositivo non supporta il sensore.
Metodi utili della classe Sensor
• getResolution(): risoluzione del sensore, ritorna un float;
• getMaximumRange(): messimo range del sensore, ritorna un float;
• getPower(): energia usata dal sensore in mA, ritorna un float;
• getVendor(): ritorna una stringa che identifica il produttore del sensore;
• getVersion(): ritorna un intero che rappresenta la versione del sensore.
• getMinDelay(): ritorna un intero che rappresenta il tempo minimo tra una
registrazione e l'altra, o 0 se il sensore registra un valore solo quanto
questo cambia.
Acquisizione dati
Si acquisiscono attraverso due metodi
dell'interface SensorEventListener:
1. onAccuracyChanged(Sensor sensor, in
accuracy);
2. onSensorChanged(SensorEvent event);
onAccuracyChanged
Monitora cambiamenti di precisione del sensore.
1. Sensor sensor: sensore su cui si registra un
cambiamento di precisione.
2. Int accuracy: può assumere 4 valori, espressi dalle
costanti:
1. SENSOR_STATUS_ACCURACY_LOW
2. SENSOR_STATUS_ACCURACY_MEDIUM
3. SENSOR_STATUS_ACCURACY_HIGH
4. SENSOR_STATUS_UNRELIABLE
onSensorChanged
Viene chiamato quando il sensore registra un
nuovo valore.
1. SensorEvent: un oggetto contente tutte le
informazioni necessarie:
1. Il sensore che ha registrato il valore
2. La precisione del valore
3. Timestamp
4. Il valore
SensorEvent
• sensorEvent.values[n]: array float contenente
i valori registrati dal sensore
• sensorEvent.sensor: ritorna l'oggetto Sensor
che ha fatto registrare la variazione.
• sensorEvent.sensor.getType(): ritorna un
intero riferito al tipo di sensore.
Avvio e arresto del monitoraggio
Si effettuano attraverso metodi di SensorManager:
• registerListener(Context context, Sensor
sensor, int maxReportLatencyUs);
• unregisterListener(SensorEventListener listener,
Sensor sensor);
• unregisterListener(SensorEventListener listener);
public class SensorActivity extends Activity implements SensorEventListener {
private SensorManager mSensorManager;
private Sensor mLight;
@Override
public final void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mLight = mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
}
@Override
public final void onAccuracyChanged(Sensor sensor, int accuracy) {}
@Override
public final void onSensorChanged(SensorEvent event) {
float lux = event.values[0];
}
@Override
protected void onResume() {
super.onResume();
mSensorManager.registerListener(this, mLight, SensorManager.SENSOR_DELAY_NORMAL);
}
@Override
protected void onPause() {
super.onPause();
mSensorManager.unregisterListener(this);
}
}
Dopo una calibrazione dove:
• minValue = valore minimo della somma
• maxValue = valore massimo della somma
Registro il sensore di accelerazione lineare e:
@Override
public final void onSensorChanged(SensorEvent event) {
accX=Math.abs(event.values[0]);
accY=Math.abs(event.values[1]);
accZ=Math.abs(event.values[2]);
double sum = accX+accY+accZ;
if(sum>=minValue && sum<=maxValue){
//Dispositivo fermo
}
}
@Override
public final void onSensorChanged(SensorEvent event) {
switch(event.sensor.getType()){
case Sensor.TYPE_ACCELEROMETER:
break;
case Sensor.TYPE_PROXIMITY:
break;
}
}

Contenu connexe

En vedette

Bakso meteor
Bakso meteorBakso meteor
Bakso meteornaylaupi
 
Ristiani pertiwi 12.03.4095 (tugas 9)
Ristiani pertiwi 12.03.4095 (tugas 9)Ristiani pertiwi 12.03.4095 (tugas 9)
Ristiani pertiwi 12.03.4095 (tugas 9)Ristiani Pertiwi
 
EMCC Ireland National Conference 2015
EMCC Ireland National Conference 2015EMCC Ireland National Conference 2015
EMCC Ireland National Conference 2015EMCC Ireland
 
Laughter & Silence Spiritual Retreat and Laughter Yoga Summit in New York
Laughter & Silence Spiritual Retreat and Laughter Yoga Summit in New YorkLaughter & Silence Spiritual Retreat and Laughter Yoga Summit in New York
Laughter & Silence Spiritual Retreat and Laughter Yoga Summit in New YorkLaughter Yoga University
 
Fairwood Studios & The Single Point of Failure (FailPDX 2/15)
Fairwood Studios & The Single Point of Failure (FailPDX 2/15)Fairwood Studios & The Single Point of Failure (FailPDX 2/15)
Fairwood Studios & The Single Point of Failure (FailPDX 2/15)Zoe Landon
 
La disponibilita dei dati in azienda strategie di protezione
La disponibilita dei dati in azienda strategie di protezioneLa disponibilita dei dati in azienda strategie di protezione
La disponibilita dei dati in azienda strategie di protezioneVincenzo Virgilio
 

En vedette (11)

Bakso meteor
Bakso meteorBakso meteor
Bakso meteor
 
Ristiani pertiwi 12.03.4095 (tugas 9)
Ristiani pertiwi 12.03.4095 (tugas 9)Ristiani pertiwi 12.03.4095 (tugas 9)
Ristiani pertiwi 12.03.4095 (tugas 9)
 
EMCC Ireland National Conference 2015
EMCC Ireland National Conference 2015EMCC Ireland National Conference 2015
EMCC Ireland National Conference 2015
 
GWMS 2015 open house
GWMS 2015 open houseGWMS 2015 open house
GWMS 2015 open house
 
Slide windows no grazie
Slide windows no grazieSlide windows no grazie
Slide windows no grazie
 
Laughter & Silence Spiritual Retreat and Laughter Yoga Summit in New York
Laughter & Silence Spiritual Retreat and Laughter Yoga Summit in New YorkLaughter & Silence Spiritual Retreat and Laughter Yoga Summit in New York
Laughter & Silence Spiritual Retreat and Laughter Yoga Summit in New York
 
Progetto quadricottero 1
Progetto quadricottero 1Progetto quadricottero 1
Progetto quadricottero 1
 
Android insecurity
Android insecurityAndroid insecurity
Android insecurity
 
Fairwood Studios & The Single Point of Failure (FailPDX 2/15)
Fairwood Studios & The Single Point of Failure (FailPDX 2/15)Fairwood Studios & The Single Point of Failure (FailPDX 2/15)
Fairwood Studios & The Single Point of Failure (FailPDX 2/15)
 
Arduino galileo edison_udoo
Arduino galileo edison_udooArduino galileo edison_udoo
Arduino galileo edison_udoo
 
La disponibilita dei dati in azienda strategie di protezione
La disponibilita dei dati in azienda strategie di protezioneLa disponibilita dei dati in azienda strategie di protezione
La disponibilita dei dati in azienda strategie di protezione
 

Plus de Vincenzo Virgilio

Plus de Vincenzo Virgilio (10)

Arduino Tre reference
Arduino Tre referenceArduino Tre reference
Arduino Tre reference
 
Theremino
ThereminoTheremino
Theremino
 
Arduino starterkit
Arduino starterkitArduino starterkit
Arduino starterkit
 
Arduino day2015 Libertà a scuola
Arduino day2015 Libertà a scuolaArduino day2015 Libertà a scuola
Arduino day2015 Libertà a scuola
 
Telemetria dei parametri dinamici di un drone marino paolo ferrara
Telemetria dei parametri dinamici di un drone marino paolo ferraraTelemetria dei parametri dinamici di un drone marino paolo ferrara
Telemetria dei parametri dinamici di un drone marino paolo ferrara
 
Telemetria dei parametri dinamici di un drone marino
Telemetria dei parametri dinamici di un drone marinoTelemetria dei parametri dinamici di un drone marino
Telemetria dei parametri dinamici di un drone marino
 
Google per la formazione
Google per la formazioneGoogle per la formazione
Google per la formazione
 
Bpm 2015 03-21-v1
Bpm 2015 03-21-v1Bpm 2015 03-21-v1
Bpm 2015 03-21-v1
 
Badusb shot
Badusb shotBadusb shot
Badusb shot
 
Arduino tre tomcat
Arduino tre tomcatArduino tre tomcat
Arduino tre tomcat
 

Dernier

GIORNATA TECNICA 18/04 | DE ROSA Roberto
GIORNATA TECNICA 18/04 | DE ROSA RobertoGIORNATA TECNICA 18/04 | DE ROSA Roberto
GIORNATA TECNICA 18/04 | DE ROSA RobertoServizi a rete
 
GIORNATA TECNICA 18/04 | DE LEO Antonio
GIORNATA TECNICA 18/04  | DE LEO AntonioGIORNATA TECNICA 18/04  | DE LEO Antonio
GIORNATA TECNICA 18/04 | DE LEO AntonioServizi a rete
 
Descrizione della struttura architettonica Eretteo.pptx
Descrizione della struttura architettonica Eretteo.pptxDescrizione della struttura architettonica Eretteo.pptx
Descrizione della struttura architettonica Eretteo.pptxtecongo2007
 
Presentzione Matematica similitudini circonferenze e omotetie.pptx
Presentzione  Matematica similitudini circonferenze e omotetie.pptxPresentzione  Matematica similitudini circonferenze e omotetie.pptx
Presentzione Matematica similitudini circonferenze e omotetie.pptxfilippoluciani9
 
GIORNATA TECNICA 18/04 | SPIZZIRRI Massimo
GIORNATA TECNICA 18/04 | SPIZZIRRI MassimoGIORNATA TECNICA 18/04 | SPIZZIRRI Massimo
GIORNATA TECNICA 18/04 | SPIZZIRRI MassimoServizi a rete
 
GIORNATA TECNICA 18/04 | BENANTI Alessandro
GIORNATA TECNICA 18/04 | BENANTI AlessandroGIORNATA TECNICA 18/04 | BENANTI Alessandro
GIORNATA TECNICA 18/04 | BENANTI AlessandroServizi a rete
 
GIORNATA TECNICA DA AQP 18/04 | MOTTA Simone
GIORNATA TECNICA DA AQP 18/04 | MOTTA SimoneGIORNATA TECNICA DA AQP 18/04 | MOTTA Simone
GIORNATA TECNICA DA AQP 18/04 | MOTTA SimoneServizi a rete
 
GIORNATA TECNICA DA AQP 18/04 | ZONNO Serena
GIORNATA TECNICA DA AQP 18/04 | ZONNO SerenaGIORNATA TECNICA DA AQP 18/04 | ZONNO Serena
GIORNATA TECNICA DA AQP 18/04 | ZONNO SerenaServizi a rete
 
GIORNATA TECNICA 18/04 | LITTERIO Raffaele
GIORNATA TECNICA 18/04 | LITTERIO RaffaeleGIORNATA TECNICA 18/04 | LITTERIO Raffaele
GIORNATA TECNICA 18/04 | LITTERIO RaffaeleServizi a rete
 

Dernier (9)

GIORNATA TECNICA 18/04 | DE ROSA Roberto
GIORNATA TECNICA 18/04 | DE ROSA RobertoGIORNATA TECNICA 18/04 | DE ROSA Roberto
GIORNATA TECNICA 18/04 | DE ROSA Roberto
 
GIORNATA TECNICA 18/04 | DE LEO Antonio
GIORNATA TECNICA 18/04  | DE LEO AntonioGIORNATA TECNICA 18/04  | DE LEO Antonio
GIORNATA TECNICA 18/04 | DE LEO Antonio
 
Descrizione della struttura architettonica Eretteo.pptx
Descrizione della struttura architettonica Eretteo.pptxDescrizione della struttura architettonica Eretteo.pptx
Descrizione della struttura architettonica Eretteo.pptx
 
Presentzione Matematica similitudini circonferenze e omotetie.pptx
Presentzione  Matematica similitudini circonferenze e omotetie.pptxPresentzione  Matematica similitudini circonferenze e omotetie.pptx
Presentzione Matematica similitudini circonferenze e omotetie.pptx
 
GIORNATA TECNICA 18/04 | SPIZZIRRI Massimo
GIORNATA TECNICA 18/04 | SPIZZIRRI MassimoGIORNATA TECNICA 18/04 | SPIZZIRRI Massimo
GIORNATA TECNICA 18/04 | SPIZZIRRI Massimo
 
GIORNATA TECNICA 18/04 | BENANTI Alessandro
GIORNATA TECNICA 18/04 | BENANTI AlessandroGIORNATA TECNICA 18/04 | BENANTI Alessandro
GIORNATA TECNICA 18/04 | BENANTI Alessandro
 
GIORNATA TECNICA DA AQP 18/04 | MOTTA Simone
GIORNATA TECNICA DA AQP 18/04 | MOTTA SimoneGIORNATA TECNICA DA AQP 18/04 | MOTTA Simone
GIORNATA TECNICA DA AQP 18/04 | MOTTA Simone
 
GIORNATA TECNICA DA AQP 18/04 | ZONNO Serena
GIORNATA TECNICA DA AQP 18/04 | ZONNO SerenaGIORNATA TECNICA DA AQP 18/04 | ZONNO Serena
GIORNATA TECNICA DA AQP 18/04 | ZONNO Serena
 
GIORNATA TECNICA 18/04 | LITTERIO Raffaele
GIORNATA TECNICA 18/04 | LITTERIO RaffaeleGIORNATA TECNICA 18/04 | LITTERIO Raffaele
GIORNATA TECNICA 18/04 | LITTERIO Raffaele
 

Android e sensori

  • 1. Android e sensori Il mondo percepito dallo smartphone
  • 2. Quali sono? • Accelerometro; • Temperatura ambiente; • Gravità; • Giroscopio; • Luce; • Accelerazione lineare; • Campo magnetico; • Orientamento; • Pressione; • Prossimità • Umidità relativa; • Vettore di rotazione; • Temperatura.
  • 3. Classificazione • Sensori di movimento: – accelerometro, gravità, giroscopio, accelerazione lineare. • Sensori ambientali: – temperatura ambiente, luce, pressione, umidità relativa, temperatura. • Sensori di posizione: – campo magnetico, orientamento, prossimità, vettore di rotazione.
  • 4. Alcune considerazioni • A seconda del dispositivo possono esserci altri sensori (esempio, Galaxy note 4 e il sensore raggi UV); • Recenti API hanno introdotto sensori legati al benessere (battito cardiaco) o al movimento dell'utente (step);
  • 5. SensorManager • Classe che permette di ottenere istanze di sensori, registrare/stoppare un callback e altro. SensorManager sManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
  • 6. Ottenere i sensori • Ottenere tutti i sensori disponibili: – List<Sensor> deviceSensors = sManager.getSensorList(Sensor.TYPE_ALL); • Ottenere un sensore specifico: – Sensor sensor = sManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD); – Se ritorna null il dispositivo non supporta il sensore.
  • 7. Metodi utili della classe Sensor • getResolution(): risoluzione del sensore, ritorna un float; • getMaximumRange(): messimo range del sensore, ritorna un float; • getPower(): energia usata dal sensore in mA, ritorna un float; • getVendor(): ritorna una stringa che identifica il produttore del sensore; • getVersion(): ritorna un intero che rappresenta la versione del sensore. • getMinDelay(): ritorna un intero che rappresenta il tempo minimo tra una registrazione e l'altra, o 0 se il sensore registra un valore solo quanto questo cambia.
  • 8. Acquisizione dati Si acquisiscono attraverso due metodi dell'interface SensorEventListener: 1. onAccuracyChanged(Sensor sensor, in accuracy); 2. onSensorChanged(SensorEvent event);
  • 9. onAccuracyChanged Monitora cambiamenti di precisione del sensore. 1. Sensor sensor: sensore su cui si registra un cambiamento di precisione. 2. Int accuracy: può assumere 4 valori, espressi dalle costanti: 1. SENSOR_STATUS_ACCURACY_LOW 2. SENSOR_STATUS_ACCURACY_MEDIUM 3. SENSOR_STATUS_ACCURACY_HIGH 4. SENSOR_STATUS_UNRELIABLE
  • 10. onSensorChanged Viene chiamato quando il sensore registra un nuovo valore. 1. SensorEvent: un oggetto contente tutte le informazioni necessarie: 1. Il sensore che ha registrato il valore 2. La precisione del valore 3. Timestamp 4. Il valore
  • 11. SensorEvent • sensorEvent.values[n]: array float contenente i valori registrati dal sensore • sensorEvent.sensor: ritorna l'oggetto Sensor che ha fatto registrare la variazione. • sensorEvent.sensor.getType(): ritorna un intero riferito al tipo di sensore.
  • 12. Avvio e arresto del monitoraggio Si effettuano attraverso metodi di SensorManager: • registerListener(Context context, Sensor sensor, int maxReportLatencyUs); • unregisterListener(SensorEventListener listener, Sensor sensor); • unregisterListener(SensorEventListener listener);
  • 13. public class SensorActivity extends Activity implements SensorEventListener { private SensorManager mSensorManager; private Sensor mLight; @Override public final void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); mLight = mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT); } @Override public final void onAccuracyChanged(Sensor sensor, int accuracy) {} @Override public final void onSensorChanged(SensorEvent event) { float lux = event.values[0]; } @Override protected void onResume() { super.onResume(); mSensorManager.registerListener(this, mLight, SensorManager.SENSOR_DELAY_NORMAL); } @Override protected void onPause() { super.onPause(); mSensorManager.unregisterListener(this); } }
  • 14. Dopo una calibrazione dove: • minValue = valore minimo della somma • maxValue = valore massimo della somma Registro il sensore di accelerazione lineare e: @Override public final void onSensorChanged(SensorEvent event) { accX=Math.abs(event.values[0]); accY=Math.abs(event.values[1]); accZ=Math.abs(event.values[2]); double sum = accX+accY+accZ; if(sum>=minValue && sum<=maxValue){ //Dispositivo fermo } }
  • 15. @Override public final void onSensorChanged(SensorEvent event) { switch(event.sensor.getType()){ case Sensor.TYPE_ACCELEROMETER: break; case Sensor.TYPE_PROXIMITY: break; } }