Share
Embed
Sviluppare applicazioni Android
Presented at JUG Genova meeting @ NIS - 28/05/2013
Paolo Montalto
May 28, 2013
Transcript
31 slides
-
Argomenti trattati • Cos’è Android • SDK (eclipse + tools)
• Struttura di un progetto android • Componenti base (Activity, View, Intent …) • Fragment (cenni) • Frammentazione e Support library (cenni) Copyright© 2013 Paolo Montalto http://www.xabaras.it -
Che cos’è android? Copyright© 2013 Paolo Montalto http://www.xabaras.it • Sistema
operativo per dispositivi mobili • Sviluppato dalla Open Handset Alliance (84 aziende tra cui Google, Samsung, LG, Nvidia…) • Open Source e gratuito • Basato su Kernel Linux • Linguaggio di programmazione Java -
Android != Linux Copyright© 2013 Paolo Montalto http://www.xabaras.it • Basato
inizialmente su Kernel 2.6 • Supporto ARM (e successivamente x86) • Sviluppato separatamente • Aggiunte patch non presenti in main branch linux (ashmem, alarms, power management, low memory kliller, logger…) • Parziale integrazione in versione 3.3 La release 3.3 del kernel vi perme1erà di avviare un userspace Android senza alcuna modifica, sebbene la ges<one dell’alimentazione non sia molto buona. Nella versione 3.4 del kernel si spera di poter correggere questo problema e arrivare ad una piena integrazione con Android. Greg Kroah-‐Hartman (Linux kernel –stable branch maintainer) -
Java ma non JVM Copyright© 2013 Paolo Montalto http://www.xabaras.it •
Dalvik Virtual Machine • No Java SE v Java ME • Subset Apache Harmony • No executable jars: apk .java .class .dex -
SDK Copyright© 2013 Paolo Montalto http://www.xabaras.it • Android developer tools
• tools a linea di comando (adb, zipalign) • SDK Manager • AVD Manager (android virtual device manager) • Emulatore • Eclipse ADT plugin L’android SDK è costituito da: -
Emulatore Copyright© 2013 Paolo Montalto http://www.xabaras.it • Rom nativa android
• Google API • Mock Locations • Simulazione Rete GSM • Pulsanti hardware • Hardware keyboard • D-Pad • Pulsanti volume • Pulsante “Power” -
Dalvik Debug Monitor Server Copyright© 2013 Paolo Montalto http://www.xabaras.it •
system information • screen capture • thread/heap info • logcat • processi • controllo emulatore • traffico di rete • stato della rete • posizioni GPS (mock) -
Struttura di un Progetto Copyright© 2013 Paolo Montalto http://www.xabaras.it Codice
Java Codice generato dal compilatore Librerie e dipendenze di sistema Definizione dell’applicazione Risorse: • layout (xml) • Immagini • Stili • File lingua Librerie .jar, .so Altri file dell’applicaizone (es. .pdf, .html, .db …) -
La directory “res” Copyright© 2013 Paolo Montalto http://www.xabaras.it Risorse grafiche
Risorse che rappresentano valori (colori, dimensioni, stringhe di testo, stili della GUI) I valori dopo il “-” nei nomi delle directory sono i selettori delle risorse, servono ad identificare l’utilizzo che l’applicazione farà di quelle risorse: • hdpi: dispositivi con densità di schermo alta • sw600dp: device la cui risoluzione orizzontale sia almeno di 600dp • v11: utilizzare solo se la versione di android sul dispositivo è 11 • it: se la lingua del device è Italiano -
Activity Copyright© 2013 Paolo Montalto http://www.xabaras.it Activity è il “contesto”
base di esecuzione in un’applicazione android. • Entry point dell’applicazione android • Solo una in foreground • Solo una attiva • Stack: nuove activity sempre on top -
View Copyright© 2013 Paolo Montalto http://www.xabaras.it • Componenti base della
UI di android • Definite e utilizzate nei file xml di Layout • Una view sa come disegnare se stessa • Risponde agli eventi (es: onClick, onLongClick) • Organizzate in gerarchie (ViewGroup) Il framework android si occupa di misurare, disegnare e disporre le View e i ViewGroup -
Layout Copyright© 2013 Paolo Montalto http://www.xabaras.it • RelativeLayout: Layout eredita
da ViewGroup • TextView è una View (come EditText, WebView, ListView, ScrollView…) • Riferimenti a risorse esterne al Layout (@string, @drawable, @dimen) File xml -
Layout e Activity Copyright© 2013 Paolo Montalto http://www.xabaras.it Caricamento layout
nell’activity Accesso alle View Accesso a risorse -
Intent Copyright© 2013 Paolo Montalto http://www.xabaras.it E’ una descrizione astratta
di un’operazione da eseguire. Generalmente usato per lanciare un’Activity Parametri principali: • action: l’azione che è necessario compiere, ad esempio ACTION_VIEW, ACTION_EDIT, ACTION_MAIN, etc. • data: i dati sui quali effettuare l’operazione, ad esempio una persona nel database di contatti, un url di un sito web, etc. Esempi (action – data): • ACTION_VIEW - content://contacts/people/1 mostra informazioni sulla persona il cui ID è 1 • ACTION_DIAL - content://contacts/people/1 mostra la scheramata di chiamata per la persona il cui ID è 1 1/3 -
Intent Copyright© 2013 Paolo Montalto http://www.xabaras.it 2/3 Attributi secondari: •
category: informazioni aggiuntive sull’azione da eseguire (es. CATEGORY_LAUNCHER) • type: specifica il MIME type dei dati passati all’Intent • component: specifica esplicitamente il nome della classe da usare • extras: può essere usato per passare informazioni aggiuntive all’activity lanciata Esempi: • ACTION_MAIN con category CATEGORY_HOME lancia la schermata Home • ACTION_GET_CONTENT con MIME type vnd.android.cursor.item/phone Mostra una lista di numeri di telefono, consentendo all’utente di selezionarne uno e ritornare il valore selezionato all’activity di partenza -
Intent Copyright© 2013 Paolo Montalto http://www.xabaras.it 3/3 Lanciare un’activity: Recuperare
il risultato di un’activity: -
AndroidManifest.xml Copyright© 2013 Paolo Montalto http://www.xabaras.it Ogni applicazione android deve
avere un file AndroidManifest.xml nella sua directory principale. Il manifest fornisce al sistema android informazioni essenziali sull’applicazione. • Principali caratteristiche di AndroidManifest.xml • definisce il package name dell’applicazione • descrive i componenti dell’applicazione (activity, servizi, provider di contenuti) • definisce quali permessi l’applicazione avrà per l’accesso a specifiche funzionalità / caratteristiche hardware • dichiara il livello minimo di API supportato • dichiara eventuali librerie utlizzate esterne all’applicazione (presenti in un package differente) 1/2 -
AndroidManifest.xml Copyright© 2013 Paolo Montalto http://www.xabaras.it Package name Icona applicazione
Nome visualizzato Permessi Versione App Versione Android SDK Intent Activity principale 2/2 -
Fragment (cenni) Copyright© 2013 Paolo Montalto http://www.xabaras.it • Introdotti in
android 3.0 Honeycomb • Fondamentali per il supporto alle applicazioni Tablet • Porzioni indipendenti dell’interfaccia utente • Hanno un loro ciclo di vita (legato a quello dell’activity) • Possono essere combinati in layout muti-pane • Possono essere riutilizzati 1/3 -
Fragment (cenni) Copyright© 2013 Paolo Montalto http://www.xabaras.it 3/3 • Possono
essere inseriti nella definizione xml del layout • Possono essere dichiarati via codice -
Altri componenti del framework Copyright© 2013 Paolo Montalto http://www.xabaras.it •
Dialog visualizzano finestre di dialogo (es: i classici alert) • Service eseguono codice in background, possono essere in esecuzione anche quando l’app non lo è • Broadcast Receiver ricevono e gestiscono eventi in modo asincrono • Content Provider consentono di accedere ai dati attraverso un’interfaccia standard (possibile definire custom) • Notification mostrano informazioni nella barra delle notifiche -
Frammentazione Copyright© 2013 Paolo Montalto http://www.xabaras.it • Ecosistema frammentato •
Frammentazione delle versioni di android • Frammentazione delle dimensioni di schermo • Frammentazione delle densità di schermo • Personalizzazioni dei produttori -
Support Library Copyright© 2013 Paolo Montalto http://www.xabaras.it • Introdotta per
porre un rimedio alla frammentazione relativa a differenti versioni del sistema operativo • Consente l’accesso a tutta una serie di funzionalità introdotte da android HoneyComb(android 3.0 api v11) in poi su dispositivi con api precedente • Supporta dispositivi android da api v4 in poi • E’ anche detta support-v4 • E’ distribuita sotto forma di .jar da includere nel progetto