Android A. Ferrari. Android Android è un sistema operativo per dispositivi mobili. Inizialmente...

24
Android Android A. Ferrari A. Ferrari

Transcript of Android A. Ferrari. Android Android è un sistema operativo per dispositivi mobili. Inizialmente...

Page 1: Android A. Ferrari. Android Android è un sistema operativo per dispositivi mobili. Inizialmente sviluppato da Startup Android Inc. acquisita poi nel 2005.

AndroidAndroidA. FerrariA. Ferrari

Page 2: Android A. Ferrari. Android Android è un sistema operativo per dispositivi mobili. Inizialmente sviluppato da Startup Android Inc. acquisita poi nel 2005.

AndroidAndroidAndroid è un sistema operativo per dispositivi mobili.Android è un sistema operativo per dispositivi mobili.

Inizialmente sviluppato da Startup Android Inc. acquisita Inizialmente sviluppato da Startup Android Inc. acquisita poi nel 2005 da Google Inc.poi nel 2005 da Google Inc.

Il cuore di Android è un kernel Linux. Il cuore di Android è un kernel Linux.

Direttamente nel kernel sono inseriti i driver per il Direttamente nel kernel sono inseriti i driver per il controllo dell’hardware del dispositivo: driver per la controllo dell’hardware del dispositivo: driver per la tastiera, lo schermo, il touch screen, il Wi-Fi, il tastiera, lo schermo, il touch screen, il Wi-Fi, il Bluetooth, il controllo dell’audio e cosi via. Bluetooth, il controllo dell’audio e cosi via.

Sopra il kernel poggiano le librerie fondamentali, anche Sopra il kernel poggiano le librerie fondamentali, anche queste tutte mutuate dal mondo Open Source. queste tutte mutuate dal mondo Open Source.

OpenGL, per la grafica, OpenGL, per la grafica, SQLite, per la gestione dei dati, SQLite, per la gestione dei dati, WebKit, per la visualizzazione delle pagine Web.WebKit, per la visualizzazione delle pagine Web.

Page 3: Android A. Ferrari. Android Android è un sistema operativo per dispositivi mobili. Inizialmente sviluppato da Startup Android Inc. acquisita poi nel 2005.

Struttura del Struttura del sistemasistema

Page 4: Android A. Ferrari. Android Android è un sistema operativo per dispositivi mobili. Inizialmente sviluppato da Startup Android Inc. acquisita poi nel 2005.

ProgrammazioneProgrammazioneLa programmazione avviene in Java.La programmazione avviene in Java.

Android dispone di una Java Virtual Machine Android dispone di una Java Virtual Machine non standard (Dalvik)non standard (Dalvik)

I sorgenti java vengono compilati in formato I sorgenti java vengono compilati in formato dex (Dalvik Executable), una sorta di bytecode.dex (Dalvik Executable), una sorta di bytecode.

Le applicazioni vengono distribuite in forma di Le applicazioni vengono distribuite in forma di pacchetto autoinstallante, un file con pacchetto autoinstallante, un file con estensione .APK . estensione .APK .

Questo non è altro che un file compresso, Questo non è altro che un file compresso, contenente il software (file con contenente il software (file con estensione .dex) le sue risorse (immagini, suoni estensione .dex) le sue risorse (immagini, suoni ecc...) e alcuni file XML. ecc...) e alcuni file XML.

Page 5: Android A. Ferrari. Android Android è un sistema operativo per dispositivi mobili. Inizialmente sviluppato da Startup Android Inc. acquisita poi nel 2005.

Sviluppo di Sviluppo di applicazioniapplicazioni

E’ necessario installare Android SDK E’ necessario installare Android SDK contenente emulatore, documentazione e contenente emulatore, documentazione e librerie.librerie.

http://developer.android.com/sdk/

L’SDK Setup permette poi di scaricare i L’SDK Setup permette poi di scaricare i device virtuali e i componenti aggiuntivi.device virtuali e i componenti aggiuntivi.

Con SDK è possibile creare device virtuali Con SDK è possibile creare device virtuali (Android Virtual Device AVD) per testare (Android Virtual Device AVD) per testare le applicazioni.le applicazioni.

Page 6: Android A. Ferrari. Android Android è un sistema operativo per dispositivi mobili. Inizialmente sviluppato da Startup Android Inc. acquisita poi nel 2005.

Applicazioni con Applicazioni con EclipseEclipse

Per sviluppare applicazioni con Eclipse è Per sviluppare applicazioni con Eclipse è necessario installare il plug-in Android necessario installare il plug-in Android Development Tool (ADT)Development Tool (ADT)

https://dl-ssl.google.com/android/eclipse/

Configurare Eclipse specificando il Configurare Eclipse specificando il percorso dell’Android SDKpercorso dell’Android SDK

Page 7: Android A. Ferrari. Android Android è un sistema operativo per dispositivi mobili. Inizialmente sviluppato da Startup Android Inc. acquisita poi nel 2005.

Nuovo progetto Nuovo progetto AndroidAndroid

Page 8: Android A. Ferrari. Android Android è un sistema operativo per dispositivi mobili. Inizialmente sviluppato da Startup Android Inc. acquisita poi nel 2005.

Ciao MondoCiao Mondo

Page 9: Android A. Ferrari. Android Android è un sistema operativo per dispositivi mobili. Inizialmente sviluppato da Startup Android Inc. acquisita poi nel 2005.

Le applicazioni Le applicazioni AndroidAndroid

Attività@Attività@

Blocchi di un’applicazione che interagiscono con l’utente utilizzando lo Blocchi di un’applicazione che interagiscono con l’utente utilizzando lo schermo ed i dispositivi di input, normalmente fanno uso di android.widget.schermo ed i dispositivi di input, normalmente fanno uso di android.widget.

Sono il modello più@ diffuso e si realizzano estendendo la classe Sono il modello più@ diffuso e si realizzano estendendo la classe android.app.Activity.android.app.Activity.

ServizioServizio

Gira in sottofondo e non interagisce direttamente con l’utente, si realizza Gira in sottofondo e non interagisce direttamente con l’utente, si realizza estendendo la classe android.app.Service..estendendo la classe android.app.Service..

Broadcast ReceiverBroadcast Receiver

Viene utilizzato quando si intende intercettare un particolare evento Viene utilizzato quando si intende intercettare un particolare evento (esempio compiere un’azione quando si scatta una foto). La classe da (esempio compiere un’azione quando si scatta una foto). La classe da estendere è android.content.BroadcastReceiver.estendere è android.content.BroadcastReceiver.

Content ProviderContent Provider

Sono utilizzati per esporre dati ed informazioni. Costituiscono un canale di Sono utilizzati per esporre dati ed informazioni. Costituiscono un canale di comunicazione tra le differenti applicazioni installate nel sistema. Si estende comunicazione tra le differenti applicazioni installate nel sistema. Si estende android.content.ContentProvider.android.content.ContentProvider.

Page 10: Android A. Ferrari. Android Android è un sistema operativo per dispositivi mobili. Inizialmente sviluppato da Startup Android Inc. acquisita poi nel 2005.

Struttura di una Struttura di una applicazioneapplicazione

In un’applicazione Android troviamo In un’applicazione Android troviamo una struttura abbastanza complessa di una struttura abbastanza complessa di directory: directory:

srcsrc contiene i package e le classi contiene i package e le classi

assets e res assets e res ospitano le risorse esterne ospitano le risorse esterne (immagini, file audio ecc). res ha una (immagini, file audio ecc). res ha una speciale struttura predefinita, formata speciale struttura predefinita, formata dalle sotto-directory drawable, layout e dalle sotto-directory drawable, layout e values. Le cartelle del gruppo drawable values. Le cartelle del gruppo drawable servono per le immagini utilizzate dal servono per le immagini utilizzate dal software, mentre layout e values software, mentre layout e values ospitano dei speciali file XML utili per ospitano dei speciali file XML utili per definire in maniera dichiarativa definire in maniera dichiarativa l’aspetto dell’applicazione ed i valori l’aspetto dell’applicazione ed i valori utilizzati al suo internoutilizzati al suo interno

gengen contiene la speciale classe contiene la speciale classe chiamata R. Invocando questa classe è chiamata R. Invocando questa classe è possibile richiamare via codice le possibile richiamare via codice le risorse memorizzate sotto la directory risorse memorizzate sotto la directory res.res.

Page 11: Android A. Ferrari. Android Android è un sistema operativo per dispositivi mobili. Inizialmente sviluppato da Startup Android Inc. acquisita poi nel 2005.

Gestione dei Gestione dei valorivalori

I valori sono coppie chiave-valore dichiarate I valori sono coppie chiave-valore dichiarate all’interno dei file XMLnella cartella res/values. all’interno dei file XMLnella cartella res/values.

Eclipse, per default, crea il file strings.xml, pensato Eclipse, per default, crea il file strings.xml, pensato per raccogliere le stringhe usate dall’applicazione per raccogliere le stringhe usate dall’applicazione che sarà sviluppata. E’ possibile rinominare il file o che sarà sviluppata. E’ possibile rinominare il file o aggiungerne altri. L’importante è che tutti i file aggiungerne altri. L’importante è che tutti i file presenti nella cartella values seguano il modello:presenti nella cartella values seguano il modello:

<?xml version="1.0" encoding="utf-8"?><?xml version="1.0" encoding="utf-8"?>

<resources><resources>

<string name=”scuola">ITIS</string> <string name=”scuola">ITIS</string>

</resources></resources>

Page 12: Android A. Ferrari. Android Android è un sistema operativo per dispositivi mobili. Inizialmente sviluppato da Startup Android Inc. acquisita poi nel 2005.

Richiamare le Richiamare le risorse da XMLrisorse da XML

Uno dei problemi della programmazione è Uno dei problemi della programmazione è l’accoppiamento fra codice e dati. Non è raro l’accoppiamento fra codice e dati. Non è raro vedere dei sorgenti in Java, in C o in qualsiasi vedere dei sorgenti in Java, in C o in qualsiasi altro linguaggio, con valori e messaggi digitati altro linguaggio, con valori e messaggi digitati direttamente dentro il codice. direttamente dentro il codice.

E’ sempre consigliabile separare i dati dal codice, E’ sempre consigliabile separare i dati dal codice, perchéF in questo modo il software è più@ facile sia perchéF in questo modo il software è più@ facile sia da realizzare sia da mantenere. da realizzare sia da mantenere.

Android favorisce la pratica del disaccoppiamento Android favorisce la pratica del disaccoppiamento fra dati e codice. fra dati e codice.

Un’applicazione Android è costituita da file Un’applicazione Android è costituita da file dichiarativi XML e da classi Java. Sia in un caso dichiarativi XML e da classi Java. Sia in un caso sia nell’altro, ci sono scorciatoie per richiamare le sia nell’altro, ci sono scorciatoie per richiamare le risorse incluse in res. risorse incluse in res.

Page 13: Android A. Ferrari. Android Android è un sistema operativo per dispositivi mobili. Inizialmente sviluppato da Startup Android Inc. acquisita poi nel 2005.

Un esempioUn esempioIl nome dell’applicazione è inserito in un file xmlIl nome dell’applicazione è inserito in un file xml

<?xml version="1.0" encoding="utf-8"?><?xml version="1.0" encoding="utf-8"?>

<resources> <string name="app_name">LaMiaApplicazione</string> </resources><resources> <string name="app_name">LaMiaApplicazione</string> </resources>

e può essere richiamato nel descrittore dell’applicazione e può essere richiamato nel descrittore dell’applicazione AndroidManifest.xmlAndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="mypackage" android:versionCode="1" android:versionName="1.0"> package="mypackage" android:versionCode="1" android:versionName="1.0">

<application android:label="@string/app_name"><application android:label="@string/app_name">

......

</application> </manifest></application> </manifest>

Page 14: Android A. Ferrari. Android Android è un sistema operativo per dispositivi mobili. Inizialmente sviluppato da Startup Android Inc. acquisita poi nel 2005.

Risorse da JavaRisorse da JavaValori e risorse possono essere richiamati Valori e risorse possono essere richiamati da codice Java servendosi della classe da codice Java servendosi della classe android.content.res.Resources. android.content.res.Resources.

All’interno di una attività è sufficiente All’interno di una attività è sufficiente richiamare il metodo getResources() per richiamare il metodo getResources() per ottenere il punto d’accesso alle risorse ottenere il punto d’accesso alle risorse dell’applicazione:dell’applicazione:

Resources res = getResources();Resources res = getResources();

String nomeApplicazione = res.getString(R.string.app_name);String nomeApplicazione = res.getString(R.string.app_name);

Page 15: Android A. Ferrari. Android Android è un sistema operativo per dispositivi mobili. Inizialmente sviluppato da Startup Android Inc. acquisita poi nel 2005.

Ciao mondo (2)Ciao mondo (2)

Page 16: Android A. Ferrari. Android Android è un sistema operativo per dispositivi mobili. Inizialmente sviluppato da Startup Android Inc. acquisita poi nel 2005.

Ciclo di vita di Ciclo di vita di un’attivitàun’attività

Page 17: Android A. Ferrari. Android Android è un sistema operativo per dispositivi mobili. Inizialmente sviluppato da Startup Android Inc. acquisita poi nel 2005.

I metodi di I metodi di un’attivitàun’attività

protected void onCreate(android.os.Bundle savedInstanceState)protected void onCreate(android.os.Bundle savedInstanceState)Richiamato non appena l’attività viene creata.Richiamato non appena l’attività viene creata.

protected void onRestart()protected void onRestart()Richiamato per segnalare che l’attività sta venendo riavviata dopo essere stata Richiamato per segnalare che l’attività sta venendo riavviata dopo essere stata precedentemente arrestata.precedentemente arrestata.

protected void onStart()protected void onStart()Richiamato per segnalare che l’attività sta per diventare visibile sullo schermo.Richiamato per segnalare che l’attività sta per diventare visibile sullo schermo.

protected void onResume()protected void onResume()Richiamato per segnalare che l’attività sta per iniziare l’interazione con l’utente.Richiamato per segnalare che l’attività sta per iniziare l’interazione con l’utente.

protected void onPause()protected void onPause()Richiamato per segnalare che l’attività non sta più interagendo con l’utente.Richiamato per segnalare che l’attività non sta più interagendo con l’utente.

protected void onStop()protected void onStop()Richiamato per segnalare che l’attività non è più visibile sullo schermo.Richiamato per segnalare che l’attività non è più visibile sullo schermo.

protected void onDestroy()protected void onDestroy()Richiamato per segnalare che l’applicazione sta per essere terminata.Richiamato per segnalare che l’applicazione sta per essere terminata.

Page 18: Android A. Ferrari. Android Android è un sistema operativo per dispositivi mobili. Inizialmente sviluppato da Startup Android Inc. acquisita poi nel 2005.

InterfacceInterfacceGli oggetti fondamentali delle interfacce grafiche Gli oggetti fondamentali delle interfacce grafiche Android sono gli oggetti View e Viewgroup.Android sono gli oggetti View e Viewgroup.

Sono oggetti View:Sono oggetti View: bottonibottonicampi di testocampi di testoicone icone gli altri oggetti di un’interfaccia grafica gli altri oggetti di un’interfaccia grafica

Sono oggetti ViewGroup:Sono oggetti ViewGroup:i contenitori che possono mettere insieme più i contenitori che possono mettere insieme più oggetti View. oggetti View. I ViewGroup, inoltre, sono a loro volta degli I ViewGroup, inoltre, sono a loro volta degli oggetti View, e di conse- guenza un possono oggetti View, e di conse- guenza un possono contenere altri ViewGroup.contenere altri ViewGroup.

Page 19: Android A. Ferrari. Android Android è un sistema operativo per dispositivi mobili. Inizialmente sviluppato da Startup Android Inc. acquisita poi nel 2005.

WidgetWidgetCon il termine widget (congegno) si Con il termine widget (congegno) si indicano quei componenti di base per indicano quei componenti di base per l’interazione con l’utente, come i l’interazione con l’utente, come i bottoni, le check box, le liste, i campi di bottoni, le check box, le liste, i campi di testo e cosi via. testo e cosi via.

I widget predefiniti di Android I widget predefiniti di Android estendono tutti (direttamente o estendono tutti (direttamente o indirettamente) la classe View, e sono indirettamente) la classe View, e sono nel package android.widget.nel package android.widget.

Page 20: Android A. Ferrari. Android Android è un sistema operativo per dispositivi mobili. Inizialmente sviluppato da Startup Android Inc. acquisita poi nel 2005.
Page 21: Android A. Ferrari. Android Android è un sistema operativo per dispositivi mobili. Inizialmente sviluppato da Startup Android Inc. acquisita poi nel 2005.

LayoutLayoutCon il termine layout (disposizione, Con il termine layout (disposizione, impaginazione), in Android, si impaginazione), in Android, si identificano tutti quei ViewGroup identificano tutti quei ViewGroup utilizzabili per posizionare i widget sullo utilizzabili per posizionare i widget sullo schermo. Android fornisce una serie di schermo. Android fornisce una serie di layout predefiniti.layout predefiniti.

Page 22: Android A. Ferrari. Android Android è un sistema operativo per dispositivi mobili. Inizialmente sviluppato da Startup Android Inc. acquisita poi nel 2005.

I layout I layout predefinitipredefiniti

FrameLayoutFrameLayoutvisualizza tutti i componenti figli nell'angolo in alto a sinistra. Se si visualizza tutti i componenti figli nell'angolo in alto a sinistra. Se si aggiungono più figli, ogni nuovo figlio va a finire sopra il precedente aggiungono più figli, ogni nuovo figlio va a finire sopra il precedente nascondendo il precedentenascondendo il precedente

LinearLayoutLinearLayoutallinea tutti i figli in una linea orrizontale o in verticale. Un Layout allinea tutti i figli in una linea orrizontale o in verticale. Un Layout verticale ha una colonna di componeti, mentre un layout orrizontale verticale ha una colonna di componeti, mentre un layout orrizontale ha una riga di componenti.ha una riga di componenti.

RelativeLayoutRelativeLayoutpermette di definire la posizione di ogni figlio relativamente agli altri permette di definire la posizione di ogni figlio relativamente agli altri e al bordo dello schermo.e al bordo dello schermo.

TableLayoutTableLayoutpermette di disporre i componenti in una griglia di righe e colonne.permette di disporre i componenti in una griglia di righe e colonne.

GalleryGalleryvisualizza una singola riga di componenti in una lista scorrevole visualizza una singola riga di componenti in una lista scorrevole orizzontalmente.orizzontalmente.

Page 23: Android A. Ferrari. Android Android è un sistema operativo per dispositivi mobili. Inizialmente sviluppato da Startup Android Inc. acquisita poi nel 2005.

XML e interfacce XML e interfacce grafichegrafiche

La moderna logica di programmazione La moderna logica di programmazione suggerisce di separare il più possibile la suggerisce di separare il più possibile la definizione delle interfacce grafiche dalla definizione delle interfacce grafiche dalla logica di programmazione.logica di programmazione.

L’ambiente di sviluppo Android propone come L’ambiente di sviluppo Android propone come soluzione la gestione delle interfacce soluzione la gestione delle interfacce mediante XMLmediante XML

Eclipse con il plug-in per Android forniscono Eclipse con il plug-in per Android forniscono un editor grafico che rende facile la un editor grafico che rende facile la definizione delle interfacce e memorizza la definizione delle interfacce e memorizza la struttura in un fiel XMLstruttura in un fiel XML

Page 24: Android A. Ferrari. Android Android è un sistema operativo per dispositivi mobili. Inizialmente sviluppato da Startup Android Inc. acquisita poi nel 2005.

editor graficoeditor grafico