Programmazione in ambiente Android - Università Politecnica delle Marche Dipartimento di Ingegneria dell'Informazione - Laura Montanini

Pagina creata da Erica Nicoletti
 
CONTINUA A LEGGERE
Programmazione in ambiente Android - Università Politecnica delle Marche Dipartimento di Ingegneria dell'Informazione - Laura Montanini
Università Politecnica delle Marche
Dipartimento di Ingegneria dell’Informazione

Programmazione in ambiente
Android
Laura Montanini -
laura.montanini@univpm.it

Corso di Tecnologie per le TLC
2013-2014

                                               1
Programmazione in ambiente Android - Università Politecnica delle Marche Dipartimento di Ingegneria dell'Informazione - Laura Montanini
   È un sistema operativo open source basato sul kernel
    Linux e progettato principalmente per dispositivi
    mobili dotati di touchscreen (ad es. smartphone e
    tablet)

   2003: Viene fondata Android Inc.
   2005: Google acquista l’azienda
   2007: Presentazione ufficiale al pubblico da parte della OHA
    (Open Handset Alliance)
   2008: HTC Dream è il primo dispositivo Android sul mercato
                                                                   2
Programmazione in ambiente Android - Università Politecnica delle Marche Dipartimento di Ingegneria dell'Informazione - Laura Montanini
Release Android

                                                          31
                                                 2012   Ottobre
                                          2011           2013
                                   2011
                            2010
                     2010
              2009
       2009
2009
                       Sono in ordine alfabetico
                       Hanno il nome di un dolciume
                       Ogni versione porta qualcosa di
                        nuovo
                                                                  3
Programmazione in ambiente Android - Università Politecnica delle Marche Dipartimento di Ingegneria dell'Informazione - Laura Montanini
Vantaggi
   È ampiamente diffuso
   Progettato per smartphone e tablet, ma utilizzabile
    anche su altri dispositivi elettronici: portatili,
    netbook, eBook reader, ecc.
   Permette di modificare e distribuire il software
    liberamente
   Dispone di un SDK per facilitare lo sviluppatore
   Sfrutta il linguaggio Java
   Fornisce una ricca documentazione reperibile on-line
   Dispone di una vasta comunità di sviluppatori con cui
    confrontarsi
                                                            4
Programmazione in ambiente Android - Università Politecnica delle Marche Dipartimento di Ingegneria dell'Informazione - Laura Montanini
Architettura

               5
Programmazione in ambiente Android - Università Politecnica delle Marche Dipartimento di Ingegneria dell'Informazione - Laura Montanini
Android SDK

   Android mette a disposizione un apposito kit di
    sviluppo completo di emulatore, librerie e
    documentazione: l’Android SDK.

   NB: poiché Android si programma in
    Java, il sistema deve disporre di un
    Java SDK (JDK): senza un JDK non è
    possibile compilare il codice!

                                                      6
Programmazione in ambiente Android - Università Politecnica delle Marche Dipartimento di Ingegneria dell'Informazione - Laura Montanini
ADT per Eclipse

   Android mette a disposizione dell’utente un pacchetto già
    configurato chiamato: ADT (Android Developer Tools)
   È un plugin per Eclipse
   Può essere scaricato all’indirizzo:
    http://developer.android.com/sdk/index.html
   Contiene:
    ◦ Eclipse + ADT plugin
    ◦ Android SDK Tools
    ◦ le ultime versioni di Android
    ◦ gli ultimi sistemi di immagini per gli emulatori

                                                                7
Programmazione in ambiente Android - Università Politecnica delle Marche Dipartimento di Ingegneria dell'Informazione - Laura Montanini
Android Virtual Device

   Il kit di sviluppo comprende l’emulatore (Android Virtual Device)
   Possiamo creare e configurare quanti dispositivi virtuali vogliamo.
   Possiamo avviare due o più dispositivi virtuali insieme (ad esempio
    per testare un’applicazione che fa interagire più smartphone).
                                                                          8
Programmazione in ambiente Android - Università Politecnica delle Marche Dipartimento di Ingegneria dell'Informazione - Laura Montanini
Configurare un AVD
   Dalla toolbar clicchiamo su Android Virtual Device Manager

   La finestra presenta la lista dei dispositivi virtuali configurati
    (inizialmente vuota) e la maschera per la creazione di una
    nuova istanza
   Clicchiamo su Device Definitions, selezioniamo un dispositivo, e
    poi clicchiamo su Create AVD
   Le voci da compilare sono:
    ◦ Name: il nome del dispositivo virtuale (ad esempio “Android1”)
    ◦ Target: la tipologia del dispositivo (se scegliamo Android 1.5 creeremo un
      dispositivo virtuale compatibile con la versione 1.5 delle specifiche Android)
    ◦ SD Card: possiamo dotare il dispositivo virtuale di una scheda di memoria
      virtuale
    ◦ Skin: possiamo scegliere la risoluzione del dispositivo. Le scelte possibili
      sono HVGA-P (480x320), HVGA-L (320x480), QVGA-P (320x240) e QVGAL
      (240x320).
                                                                                       9
Programmazione in ambiente Android - Università Politecnica delle Marche Dipartimento di Ingegneria dell'Informazione - Laura Montanini
Configurare un AVD
   Dalla toolbar clicchiamo su Android Virtual Device Manager

                                                                 10
Lanciare un AVD
   Una volta creato l’AVD, dalla scheda Android Virtual Devices, lo
    selezioniamo e clicchiamo su Start…

                                                                       11
Eseguire un’app
   In fase di sviluppo, esistono due modi per eseguire la
    propria app:
    ◦ Usando l’AVD:
       Permette di simulare il funzionamento su differenti
        dispositivi
       È oneroso dal punto di vista computazionale
    ◦ Usando il proprio dispositivo Android
       Non è necessario possedere un computer potente
       Permette di verificare il funzionamento solo sul dispositivo
        scelto
       In Windows necessita l’installazione dei driver del
        dispositivo

                                                                       12
Java o non Java?
   Il linguaggio utilizzato da Android si basa sul
    linguaggio Java, ma non è Java!

   Quasi la totalità delle librerie utilizzate sono
    librerie standard di Java ad eccezione di quelle
    grafiche
   La definizione dell'interfaccia grafica utilizza un
    approccio dichiarativo come nella maggior parte
    delle attuali piattaforme di sviluppo
   Non viene usata la Java Virtual Machine

                                                          13
Dalvik Virtual Machine
 Per ottimizzare al massimo l'utilizzo delle risorse dei
  dispositivi, è stata adottata una diversa Virtual
  Machine (VM) chiamata Dalvik
 È una VM ottimizzata per l'esecuzione di applicazioni
  in dispositivi a risorse limitate
 Esegue codice contenuto in file .dex (Dalvik
  EXecutable) ottenuti, in fase di building, a partire da
  file .class di byte code Java

                                                            14
I mattoni fondamentali di un’app

                                   15
I mattoni fondamentali di un’app
 A seconda di quel che si intende fare è disponibile un
  diverso modello di applicazione. Android fornisce
  quattro mattoni di base:
 Attività:
    ◦ interagisce con l’utente utilizzando lo schermo e i dispositivi
      di input messi a disposizione dallo smartphone
    ◦ è il modello più diffuso in Android
    ◦ estende la classe base android.app.Activity
   Servizio:
    ◦ gira in sottofondo e non interagisce direttamente con
      l’utente
    ◦ ad esempio può riprodurre un brano MP3
    ◦ estende la classe android.app.Service
                                                                        16
I mattoni fondamentali di un’app

   Broadcast Receiver:
    ◦ utilizzato quando si intende intercettare un particolare
      evento
    ◦ ad esempio lo si può utilizzare se si vuole compiere un’azione
      quando si scatta una foto o quando parte la segnalazione di
      batteria scarica
    ◦ estende la classe android. Content. BroadcastReceiver
   Content Provider:
    ◦ utilizzato per accedere a dati e informazioni
    ◦ costituisce un canale di comunicazione tra le differenti
      applicazioni installate nel sistema
    ◦ Estende la classe astratta android.content.ContentProvider.

                                                                       17
Hello, World!
   Creiamo la nostra prima Activity!
   Dalla toolbar : New > Android > Android Application Project
   Impostiamo il nome, il livello API minimo e quello target

                                                                  18
Hello, World!
   Configuriamo l’icona di lancio, impostiamo, per iniziare, una
    Blank Activity e ne scegliamo il nome

                                                                    19
Hello, World!
   Eclipse crea in maniera automatica l’applicazione “Hello,
    World!”

                                                                20
Hello, World!
                   Eclipse crea in maniera automatica l’applicazione “Hello,
                    World!”

Struttura dei
  progetti
presenti nel
 workspace

                                                                                21
Hello, World!
     Eclipse crea in maniera automatica l’applicazione “Hello,
      World!”

    Classi e file
       aperti

                                                                  22
Hello, World!
   Eclipse crea in maniera automatica l’applicazione “Hello,
    World!”

                                     Gerarchia di
                                pacchetti e classi del
                                progetto , con relativi
                                  attributi e metodi

                                                                23
Hello, World!
   Eclipse crea in maniera automatica l’applicazione “Hello,
    World!”

                           Messaggi di errore,
                           logcat, warning ed
                               eccezioni

                                                                24
Il ciclo di vita di un’Activity

                                  25
Il ciclo di vita di un’Activity
Quando si crea un’istanza di un’activity, il sistema richiama in sequenza
queste tre callback: solo a quel punto l’utente può interagire con l’activity

                     3

           2

 1

                                                                                26
Il file Manifest

 Per ogni progetto deve essere redatto un file
  AndroidManifest.xml
 Dichiara:
    ◦ le componenti (, , , )
    ◦ i permessi
    ◦ il livello minimo di API richiesto
    ◦ le caratteristiche hardware e software necessarie (ad es.
      fotocamera, bluetooth, ecc. )
    ◦ le librerie esterne a cui l'applicazione deve essere linkata (ad
      es. la libreria di Google Maps)

                                                                         27
L’interfaccia utente
   Usa una gerarchia di oggetti delle classi View e
    ViewGroup
    ◦ View: UI widget come bottoni o aree di testo
    ◦ ViewGroup: contenitori invisibili che definiscono come gli
      elementi figli devono essere posizionati

                                                                   28
L’interfaccia utente
   Elementi derivati dalla classe ViewGroup: i layout
       LinearLayout        RelativeLayout         WebView

   Elementi derivati dalla classe View: bottoni, aree di testo, radio
    button, number picker, check box, progress bar, ecc.

    Button                          RadioButton

    CheckBox                      NumberPicker

                                                                         29
Il layout

 Definisce la struttura visiva dell’interfaccia utente
 È possibile dichiarare il layout in due modi:
    ◦ Dichiarare gli elementi grafici nel file .xml
    ◦ Instanziare gli elementi a runtime, creando oggetti delle
      classi View e ViewGroup via codice

                                                                  30
Il layout

Posizione del
  file .xml

                            31
Selettore del
dispositivo e della
 risoluzione dello
                      Il layout
     schermo

                                  32
Il layout
        Selettore
    dell’orientazione
     dello schermo

                        33
Palette per la
scelta di layout   Il layout
  ed elementi

                               34
Il layout    Struttura gerarchica
            di layout ed elementi

                              35
Il layout

 Schede per passare
  dall’editor grafico
all’editor di testo xml

                          36
Il layout

        Editor di testo xml

                              37
Hello, World SMS!

   Creiamo un’applicazione che invii il messaggio “Hello,
    World!” via SMS al numero desiderato

   Aspetti interessanti:
    ◦ Richiesta di permessi
    ◦ Gestione di bottoni ed elementi grafici
    ◦ Utilizzo delle funzionalità di invio degli SMS

                                                             38
Hello, World SMS!
   La richiesta dei permessi:

                                 39
Hello, World SMS!
   La realizzazione del layout:

                                   40
Hello, World SMS!
   La realizzazione del layout:

                                   41
Hello, World SMS!
   La realizzazione del layout:

                                   42
Hello, World SMS!
   La realizzazione del layout:

                                   43
Hello, World SMS!
   La realizzazione del layout:

                                   44
Hello, World SMS!
   La realizzazione del layout:

                                   45
Hello, World SMS!
   La gestione di bottoni ed elementi grafici:

                                    Si importano dalla libreria
                                   standard di Android le classi
                                   necessarie alla gestione degli
                                         elementi creati

                           Si associa agli elementi definiti nel file di
                            layout un oggetto della relativa classe
                                                                           46
Hello, World SMS!
                  La gestione dell’evento click:   Si assegna al bottone
                                                      un nuovo gestore
                                                       dell’evento click
                                                          chiamato
                                                        OnClickListener

Si effettua l’override
 del metodo onClick
   che corrisponde
all’evento pressione
     del bottone

                                                                            47
Hello, World SMS!
               L’uso delle classi per l’invio di SMS:

                                                         Creazione di un SMS
                                                              manager

Invio del messaggio
 “Hello, World!” al
 numero composto

                                                                               48
I pacchetti APK

 Le applicazioni Android sono distribuite sotto forma
  di file APK (Android Package)
 Contengono: eseguibili in formato DEX, eventuali
  risorse associate e i descrittori che definiscono il
  contenuto del pacchetto
 È necessario apporre una firma digitale
 Non è necessario che una certification authority
  riconosca la firma: è possibile usare un certificato
  “fatto in casa”

                                                         49
Creare la firma digitale
   Dal menu contestuale del progetto cliccare su Export
    > Android > Export Android Application

    Le firme digitali vengono raccolte e   Le firma digitale è caratterizzata da
    conservate all’interno di un           un nome (alias), da una password,
    keystore                               da un tempo di validità e dai dati
    NB: è buona norma proteggerlo          anagrafici del firmatario
    con una password nel caso il file ci
    venga rubato!                                                                  50
Puoi anche leggere