Algo and Math

Android Studio - SENSORI

I Sensori sono tanti, variano a seconda delle Architettura del Device.

Più il DEVICE costa, più dovrebbe avere Sensori al suo interno.

C’è una LIBRERIA Standard

OHA, hanno standardizzato le comunicazioni con i sensori. E quindi anche i Protocolli, la Lista dei Sensori che un Device deve avere per poter installare una certa versione di O.S. Android. A seconda dell’SDK che sta girando. L’SDK potrebbe vedere dei Sensori che a Livello Hardware, sono più recenti.

I Sensori che supportano tutto: accelerometri, sensori di gravità, giroscopi

Abbiamo anche i SENSORI di POSIZIONE, l’orientamento.

(magnetometri, GPS)

Ci sono anche i Sensori di Pressione.

O.S. Android, ha la Libreria SENSOR FRAMEWORK (gratuitamente). Le funzionalità adatte per comunicare con questi sensori.

Le Librerie specifica i device disponibili. C’è una Matrice di sensori.

Specifica la capacità dei Sensori. Ogni Sensore ha un nome, ma è bene pensare a specifiche particolari.

Possiamo avere un sensore A su un device e un altro sensore A su un altro device, ma potrebbero appartenere a 2 produzioni diverse.

E’ bene accertarsi che il SENSORE riesca ad acquisire informazioni.

C’è da considerare che il CONSUMO ENERGETICO, consuma batteria.

Bisogna anche valutare se tra i vari Sensori, se è supportato per certi aspetti.

E’ bene accertarsi di poter utilizzare il Sensore, che sicuramente avrà dei parametri diversi.

Sensori Medici, soprattutto.

SENSORI: acquisiscono i dati grezzi. Un buon ingegnere del software, fa dei Test: caso pessimo e caso: ottimo. Il caso pessimo è sicuro che funzioni. Sistemi Runtime, come O.S. Android.

Come acquisire questi dati? Listener. Gestore del Sensore.

C’è la chiamata allo Stacco / Attacco del Sensore. Il Sensore va resettato.

Quando l’Activity perde il focus(), il Sensore non è più attaccato.

La gestione del Sensore è collegata, impattata dalla gestione dell’Activity.

Il Sensore non é più attivo, va staccato.

E’ bene sempre staccare il Sensore, perché potrebbe servire ad un’altra Activity o ad un’altra APP.

Se il Sensore è stato utilizzato da un’altra APP, i dati che ci sono non sono più validi. Ricordiamoci che acquisisce i Dati Grezzi.

SENSORE: acqusisce i dati grezzi.

E’ bene che i dati siano Salvati, prima di staccare il SENSORE.

La gestione dei SENSORI è facilitata dalle Librerie, però è tutta a carico dello Sviluppatore.

Esiste una Tabella con le varie versioni dei Sensori, in corrispettiva all’SDK e alle API da utilizzare.

Per accedere ai SENSORI: include di una Libreria

e abbiamo il: SensorManager

Il SENSORMANAGER è l’oggetto che gestisce, l’istanza del Servizio. Cosa fa?

Registra i Listener e attacca e stacca i vari, sensori.

SENSOR, crea l’istanza del Sensori che vogliamo utilizzare.

SENSOREVENT istanzia un evento prodotto dal sensore.

SENSOR EVENT LISTENER

riceve notifiche quando il valore di un sensore cambiamenti

USO TIPICO

Al Runtime è bene identificare i Sensori che sono Attivi.

MONITORAGGIO: acquisizione di dati e salvataggio di Dati. Il Buffer è limitato. Il Monitoraggio è legato al salvataggio dei dati.

E’ bene salvare i dati su una connessione remota.

L’utilizzo del Sensore è legato a come salvare i dati.

I Sensori hanno un campionamento veloce, in genere. E’ bene gestire l’evento, che rileva una modifica di parametri. E’ come un cambio di configurazione.

L’evento di un Sensore, fornisce: nome, sensore, timestamp, accuratezza, dato.

Identificare il SENSORE? SensorManager

SensorManager è l’oggetto attivo da Utilizzare sempre nell’Activity.

Sensor.TYPE_ALL (Lista dei Sensori, ovviamente al RunTime)

LISTA SENSORI

Se si vuole elencare dei sensori di uno specifico tipo si può usare una costante diversa da TYPE_ALL, p.e.: TYPE_GYROSCOPE

Il SensorManager è quello che dobbiamo utilizzare, per far i vari controlli. Il SensorManager prende lo STATO dei sensori e permette di far i controlli.

Di solito a RunTime si ha l’elenco dei SENSORI. Quindi dall’elenco possiamo capire, che tipo di SENSORE è, quali sono le Sue capacità.

Il Sensore del cardiofrequenzimetro, è bene aver una Lista, dovremmo cercare una Lista giusta per Il Sensore giusto in base al tipo del Campionamento.

SISTEMA DI COORDINATE

in genere l’acquisizione viene fatta su coordinate cartesiane e l’asse Z viene verso di noi.

L’Orientamento viene fatto considerando le parti cartesiane.

INFO SENSORI

le funzionalità: getResolution() e getMaximumRange()

SENSORI: CAMPIONAMENTO

La risoluzione è l’intervallo massimo, il range del Dato massimo.

La precisione è importante.

Sono dati DINAMICI, dipendono dal Device.

Esempio di GIROSCOPIO.

ALTRI METODI

getMinDelay()

restituisce il tempo minimo necessario al Sensore per leggere il Dato

se il valore è uguale a 0, il Sensore fornisce i dati solo quando c’è un cambio di parametri monitorati

se il valore è diverso da 0 allora si tratta di un Sensore di Streaming.

getMaxDelay()

determina il ritardo massimo nell’acquisizione del dato

quando sta Campionando, quanto ci mette a terminare un CICLO di Campionamento e iniziarne un ALTRO.

Spesso non corrisponde alla Frequenza (Tale, è legata all’Hardware).

Tra hardware e software c’è un certo ritardo.

OnAccuracyChanged()

Quando il Sensore ha cambiato l’Accuratezza: Alta, Media, Bassa

onSensorChanged() → si riceve un riferimento a SensorEvent

Se l’acquisizione dura del TEMPO, è sempre bene ricordare che l’Utente può metterla in onPause().

E’ bene salvare il Bundle. Sempre se ci interessa salvare lo Stato, salvato prima.

CONTAPASSI: se l’UTENTE riceve una telefonata mentre sta camminando. E’ bene gestire il BUNDLE.

C’è anche il SENSORE di Luce.

Quando il SENSORE è riattaccato, vuol dire è Staccato! E’ bene quindi, riprendere il RIPRISTINO dei Dati, sempre se siamo interessati ai Dati.

Altrimenti i Dati saranno a Zero.

CONTAPASSI

è un Sensore a basso consumo. Lavora in backgroud

E’ bene ricordarsi di DISATTIVARE I SENSORI, perché O.S. Android non li disattiva da SOLO.

I Sensori consumano Batteria!!!

Exit mobile version