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
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)
system information • screen capture • thread/heap info • logcat • processi • controllo emulatore • traffico di rete • stato della rete • posizioni GPS (mock)
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 …)
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
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
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
da ViewGroup • TextView è una View (come EditText, WebView, ListView, ScrollView…) • Riferimenti a risorse esterne al Layout (@string, @drawable, @dimen) File xml
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
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
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
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
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 delle versioni di android • Frammentazione delle dimensioni di schermo • Frammentazione delle densità di schermo • Personalizzazioni dei produttori
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