Elenco dei sensori in un dispositivo Android

Questo è una semplice app che visualizza tutti i sensori presenti nel telefono riportando le seguenti caratteristiche:

  • Name: nome del sensore
  • Version: versione del modulo del sensore
  • Vendor: venditore del sensore
  • Type: tipo del sensore
  • Max Range: massimo valore del sensore
  • Resolution: risoluzione del sensore
  • Min Delay: minimo intervallo fra 2 eventi (uguale a zero se il sensore restituisce un valore solo quando il valore misurato cambia)
  • Power: consumo elettrico del sensore

  1. crea un progetto Android con package eu.lucazanini.sensorlist e senza attività iniziale
  2. modifica il file AndroidManifest.xml
  3. modifica il file res/values/strings.xml
  4. crea il file res/values/types.xml
  5. modifica il file res/values/styles.xml

    in questo file .xml definisco 4 stili personalizzati per le view in modo che le etichette siano in corsivo e i campi più importanti in grassetto e con un carattere più grande
  6. crea la risorsa res/layout/list_item.xml

    questo layout rappresenta un singolo item della Listview in cui visualizzo le specifiche di un solo sensore
    le view presenti in questo layout hanno un riferimento agli style definiti in res/values/styles.xml
  7. crea la classe eu/lucazanini/sensorlist/MainActivity.java
  8. l’attività principale estende la classe ListActivity e non Activity, perchè è più semplice mostrare una lista di item
    nell’evento onCreate ci sono 3 passaggi fondamentali:

    • creo un ArrayList<MySensor>, che è un array contenente gli oggetti Sensor con cui rappresento i sensori del telefono
    • creo un oggetto SensorAdapter, nel cui costruttore passo anche l’ArrayList<MySensor> del punto precedente; è importante che SensorAdapter estenda ArrayAdapter<MySensor>
    • passo l’oggetto SensorAdapter come argomento a setListAdapter per popolare la ListView

    nell’evento getSensors trovo tutti i sensori del telefono e li aggiungo come oggetti di classe MySensor a una List che assegno a ArrayList<MySensor> nell’evento onCreate

  9. crea la classe eu/lucazanini/sensorlist/SensorAdapter.java

    quando si estende un ArrayAdapter, si sovrascrive il metodo getView per impostare il layout (res/layout/list_item.xml)
    le text view riferite a “Min Delay” sono mostrate e valorizzate solo se la versione delle API è uguale o maggiore di Gingerbread
    alcune stringhe sono visualizzate usando il metodo Html.fromHtml(String source) perchè contengono caratteri speciali (μ o ²)
  10. crea la classe eu/lucazanini/sensorlist/MySensor.java

    il metodo getMinDelay della classe Sensor è stato introdotto con GingerBread (API 9, Android 2.3), quindi può essere eseguito solo dopo aver verificato che la versione delle API del dispositivo sia uguale o superiore a 9
    l’annotazione @TargetApi serve per evitare un errore di compilazione
    Le variabili MICRO e SQUARE definiscono alcuni caratteri speciali che sono visualizzati nella classe SensorAdapter tramite il metodo Html.fromHtml(String source)

L’applicazione lanciata su un emulatore con API Level 7

L’applicazione lanciata su un emulatore con API Level 17

L’applicazione lanciata su un Galaxy Nexus con API Level 17

L’icona è differente da quella di default perchè ho sostituito le icone ic_launcher.png nelle cartelle res/drawable-*

3 risposte a “Elenco dei sensori in un dispositivo Android”

  1. Code compiles but does not run. I get the title bar “Sensor List” and a blank white page, then after a couple of seconds, an error message “Unfortunately, Sensor List has stopped”, with an Ok button. I’m on Ice cream sandwich, Samsung Galaxy Ace 2x

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.