La piattaforma Android

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "La piattaforma Android"

Transcript

1 Sistemi Embedded per il Mobile Multimedia La piattaforma Android

2 Bibliografia Free Books Android Guida per lo Sviluppatore, APOGEO Beginning Android 3, APRESS Advanced Android Development, MURPHY

3 Agenda Introduzione ad Android: contesto, storia e confronto con altre piattaforme, caratteristiche Architettura: Applicazioni, Application Framework, Librerie, Android Runtime,... Dalvik Virtual Machine: confronto con JVM, gestione della memoria, bytecode Strumenti di Sviluppo: SDK, Emulator

4 SISTEMI EMBEDDED Lezione n. 1: Introduzione ad Android

5 La rivoluzione dei dispositivi mobili 1/2 Il dispositivo che fino a qualche anno fa chiamavamo cellulare oggi è a tutti gli effetti un Personal Computer. La vera rivoluzione dal punto di vista degli utenti consiste nel fatto che uno smartphone è molto più Personal di un PC perché ci segue ovunque. Gli sviluppatori possono finalmente creare applicazioni che non devono fare più i conti con il concetto di "risorse limitate". 5

6 La rivoluzione dei dispositivi mobili 2/2 Dal punto di vista dei produttori la rivoluzione consiste nel fatto che in passato ogni produttore di dispositivi mobili ha realizzato un proprio sistema operativo, ambiente di sviluppo, linguaggio, tool: nessuno si è affermato come standard. Il progetto Android nasce quindi da una esigenza di standardizzazione su iniziativa di Google. 6s

7 Cosa è Android? Android è la prima piattaforma software open per dispositivi mobile Android è uno stack software per dispositivi mobili ed include un sistema operativo, un middleware ed un insieme di applicazioni chiave. Android è stato sviluppato da Google Inc. e da un consorzio di aziende chiamato Open Handset Alliance 7

8 Perchè Open? E' open perchè: Utilizza tecnologie open (linux kernel) Le librerie e le API utilizzate per realizzare Android sono le stesse che possiamo usare per le nostre applicazioni Il kernel linux è rilasciato sotto GNU General Personal Licence (GPL). La piattaforma Android è rilasciata sotto Open Source Apache Software Licence 2.0 (ASL). 8

9 Open Handset Alliance Operatori mobili: Telecom, Vodafone, T-Mobile... Produttori di chip: Arm, Intel, NVIDIA... Produttori di telefonini: Toshiba, HTC, Acer, Sony,... Aziende sviluppatrici di software: Google, ebay, Omron,... Aziende di commercializzazione: Accenture, Aplix... 9

10 Un po' di storia 10

11 G1 T-Mobile Processor Qualcomm MSM7201A, 528 MHz RAM: 192 MB Storage: Flash Memory 256 MB Display 3.2'' Supporto 3G UMTS/HSDPA a 7,2 Mbps 11

12 Platforms 1/2 12

13 Platforms 2/2 Fonte: developer.android.com Aggiornato al 01/10/

14 Requisiti Minimi 1/2 I requisiti minimi di ogni versione rilasciata, sono definiti mediante l'android Compatibility Program che consiste di tre componenti chiave: Il codice sorgente dello stack software Android Il Compatilbility Definition Document, che descrive le specifiche di compatibilità La Compatilbility Test Suite, che rappresenta il "meccanismo" di compatibilità I più recenti ACP si riferiscono alla e alla

15 Requisiti Minimi 2/2 Per Android 2.2 alcuni dei requisiti minimi sono: Memoria >= 128MB (kernel) + 150MB (/data) + 1GB (Application/SD Card) FotoCamera >= 2 megapixel Display >= 2,5'' Per Android 4.0 alcuni dei requisiti minimi sono: Memoria >= 340MB (kernel) + 350MB (/data) + 1GB (Application/SD Card) FotoCamera >= 2 megapixel Display >= 2,5'' 15

16 Codice Sorgente di Android Il codice sorgente di Android può essere scaricato seguendo le indicazioni descritte in Le ultime versioni di Android per le quali è disponibile il codice sorgente sono la 4.0 (API level 14) e la 2.3 (API level 9) 16

17 Caratteristiche principali 1/3 Android include un application framework che permette il riutilizzo dei componenti sviluppati. La Dalvik Virtual Machine è ottimizzata per l'esecuzione su dispositivi mobili. Il browser web integrato è basato sul software open-source WebKit. La grafica 2D è basata su una libreria appositamente sviluppata. 17

18 Caratteristiche principali (2/3) La grafica 3D è basata sulla specifica OpenGL ES 1.0 e l'accelerazione hardware è opzionale. Per l'immagazzinamento strutturato di dati si usa SQLite. Sono supportati i più comuni formati audio e video (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF). Supporta la telefonia GSM. 18

19 Caratteristiche principali (3/3) A seconda dell'hardware può supportare anche EDGE (2.5G), UMTS (3G), Bluetooth e Wi-Fi. Prevede anche il supporto per fotocamera, GPS, bussola e accelerometro. Fornisce un ricco ambiente integrato di sviluppo che include un emulatore, strumenti per il debugging e per il profiling di memoria e prestazioni, ed un plugin per l'ide Eclipse per sviluppare applicazioni in linguaggio Java. 19

20 Architettura di Android 20

21 Componenti del sistema I componenti mostrati nel precedente schema dell'architettura verranno ora analizzati uno ad uno: Applicazioni Application Framework Librerie Android Runtime Kernel Linux 21

22 Applicazioni Android dispone di base di un insieme di applicazioni che includono un client , un programma per la gestione degli SMS, agenda, rubrica, mappe, un browser web e altre. Tutte le applicazioni vengono scritte utilizzando il linguaggio di programmazione Java. 22

23 Application Framework Gli sviluppatori hanno pieno accesso alle stesse API del framework che vengono utilizzate dalle applicazioni di base. L'architettura delle applicazioni è progettata per semplificare il riutilizzo dei componenti. Ogni applicazione può pubblicare le sue capabilities e le altre possono farne uso. Questo stesso meccanismo fa sì che l'utente possa rimpiazzare alcuni componenti. 23

24 Servizi dell'application Framework (1/2) L'Application Framework fornisce alle applicazioni i seguenti servizi: Un insieme di Views completo ed estensibile che include liste, griglie, text-box, pulsanti e perfino un browser web integrato nell'applicazione. I Content Provider permettono alle applicazioni di accedere ai dati di altre applicazioni (es. la rubrica) o di mettere in condivisione i loro stessi dati. 24

25 Servizi dell'application Framework (2/2) Un Resource Manager che fornisce l'accesso alle risorse esterne al codice, come stringhe localizzate, grafici e file di layout. Un Notification Manager permette a tutte le applicazioni di mostrare avvisi personalizzati sulla barra di stato. Un Activity Manager che gestisce il ciclo di vita delle applicazioni. 25

26 Librerie Native (1/4) Sono librerie scritte in C/C++ che rappresentano il core di Android e sono usate dai vari componenti del sistema. Le capabilities di queste librerie sono esposte agli sviluppatori sempre attraverso l'application Framework. La libreria più importante è senz'altro la Standard C Library (libc) derivata dalla sua implementazione BSD e ottimizzata per l'esecuzione su dispositivi embedded. 26

27 Librerie Native (2/4) Il Media Framework (librerie multimediali) sono basate su OpenCORE di PacketVideo e supportano la riproduzione e la registrazione di vari formati audio/video. Il Surface Manager gestisce l'accesso al sottosistema di visualizzazione su schermo e senza sforzo da parte del programmatore compone livelli di grafica 2D e 3D provenienti da varie applicazioni. 27

28 Librerie Native (3/4) WebKit (LibWebCore) è il motore di browser alla base sia del browser principale di Android che delle web view integrate nelle applicazioni. SGL è l'engine grafico 2D. Le librerie 3D implementano la API OpenGL ES 1.0 e 2.0 e possono utilizzare sia l'accelerazione hardware (se disponibile) sia una implementazione software ottimizzata. 28

29 Librerie Native (4/4) La liberia FreeType fornisce il rendering per i font bitmap e vettoriali SQLite è un potente e leggero motore di database relazionale disponibile per tutte le applicazioni, per la memorizzazione di qualsiasi tipo di dato strutturato SSL è la libreria per la gestione dei Secure Socket Layer. 29

30 Android Runtime L'Android Runtime si compone delle Core Libraries e della Dalvik Virtual Machine. Le Core Libraries forniscono molte delle funzionalità delle analoghe librerie disponibili per il linguaggio di programmazione Java. Ogni applicazione Android gira in un suo proprio processo, con la sua istanza della Dalvik Virtual Machine (VM). 30

31 Core Libraries Rappresentano un insieme di librerie molto vicine alla Dalvik Virtual Machine ed estratte in parte dal progetto Apache Harmony (2007) ed in parte appositamente adattate Sono distribuite in tre categorie: DalvikVM specific libraries (System Info, Debugging) Java Compatibility libraries (Base and utility classes) Thirty Part Libraries (Apache HttpClient 4.0) 31

32 Dalvik VM (1/2) La Dalvik VM è stata ottimizzata in modo che uno stesso dispositivo embedded sia in grado di eseguirne più istanze in modo efficiente. La Dalvik VM esegue un bytecode incompatibile con quello della Java VM e che viene detto Dalvik Executable (.dex), ottimizzato per avere una occupazione di memoria minima. La Dalvik VM è register-based (mentre la Java VM è stack-based). 32

33 Dalvik VM (2/2) Il ciclo di sviluppo prevede che una applicazione venga dapprima sviluppata in Java, e successivamente un tool (dx) converte i file.class, ottenuti dalla normale compilazione java, in file ottimizzati.dex 33

34 Kernel Linux Android si basa sul kernel Linux (la versione 4.1 è basata sul kernel ) per i servizi di base come la sicurezza, la gestione della memoria, la gestione dei processi, lo stack di rete e il modello dei driver. Il kernel funge anche da livello di astrazione tra l'hardware e il resto dello stack software. In questo livello avviene la gestione dei driver dell'hardware (videocamera, display, memoria flash, la scheda wireless...) 34

35 Conclusioni In questa lezione abbiamo visto una prima panoramica di Android, le sue caratteristiche principali e le varie parti che compongono la sua architettura. 35

36 Sistemi Embedded - Android Lezione n. 2: Piattaforme per Dispositivi Mobili

37 Piattaforme per dispositivi mobili (Passato) Fino ai primi anni 90 non si può parlare di piattaforme ma di Sistemi Embedded 1996 Palm OS Windows CE 2000 Symbian Windows Pocket PC 2006 Java ME 37

38 Piattaforme per dispositivi mobili (Presente) Attualmente le più diffuse piattaforme per dispositivi mobili sono: Windows Phone 7 ios 6 Blackberry (Java ME + API BlackBerry) Android 38

39 Mercato USA Gen-Mar 2012 fonte: comscore.com 39

40 Previsione Mercato USA 2015 fonte: gartner's 40

41 Previsione mondiale fonte: idc.com 41

42 Blackberry I telefoni Blackberry di RIM (Research-InMotion) sono prodotti diffusi da anni nell'ambito enterprise. Sono specializzati nella gestione della posta elettronica in modalità push. Sebbene siano sempre considerati prodotti all'avanguardia, sono sempre stati utilizzati solo nell'ambito aziendale e non hanno quindi avuto una grande diffusione nel mercato consumer che garantisce i volumi più elevati. 42

43 Sistemi Operativi per Smartphone Di conseguenza nei prossimi anni la vera lotta tra i sistemi operativi per smartphone avverrà fra quattro grandi concorrenti: Windows Phone, ios e Android. Dietro questi sistemi operativi si celano i colossi del mondo IT, ovvero Microsoft, Apple, Google, Nokia(?), Samsung. Seguendo l'esempio di Google anche Nokia ha dichiarato che ben presto anche Symbian diventerà open-source (come conseguenza all'allenza con Microsoft). 43

44 Confronto tra SO:strumenti di sviluppo Per tutte le piattaforme prese in considerazione l'sdk che permette lo sviluppo di applicazioni è liberamenente disponibile. Riguardo ai linguaggi di programmazione da adoperare, per Windows Mobile è possibile utilizzare indifferentemente C++, C# e VB.NET. Per Symbian si usa C++. Per ios si usa Objective-C. Per Android e BlackBerry si usa Java. 44

45 Confronto tra SO: distribuzione applicazioni Tutte le piattaforme provedono: un App Store ufficiale (Apple-iTunes App Store, Android Market, Nokia-Ovi Store, Windows Phone MarketPlace e BlackBerry-App World) dal quale è possibile scaricare programmi gratuiti o a pagamento. L'installazione tramite PC è prevista da Windows mediante il WMDC, Nokia con il Nokia OVI Suite, Android Platform per Android e BlackBerry mediante il Desktop Manager. 45

46 Piattaforme Mobile in arrivo Open Source Linux based Open Source Linux based Closed Source, Cloud based Android Fork 46

47 Conclusioni In questa lezione abbiamo elencato le principali piattaforme alternative per lo sviluppo di applicazioni per terminali mobili. 47

48 Sistemi Embedded - Android Lezione n. 3: Android VS Java

49 Introduzione In questa lezione vedremo quali sono le differenze principali tra Android e le varie versioni di Java.

50 Linguaggio Java e VM Quando si parla di Java bisogna subito chiarire se ci si riferisce al linguaggio di programmazione oppure alle varie versioni di librerie e Virtual Machine. Dal punto di vista del linguaggio di programmazione, Android si basa al 100% sul linguaggio di programmazione Java ed in particolare richiede la presenza del JDK 5 o 6 per permettere lo sviluppo con Eclipse o altri IDE.

51 Versioni di Java 1/2 JAVA EE Enterprise Edition JAVA SE Standard Edition JAVA ME Connected JAVA ME Limited (CDC) (CLDC) per la creazione di servlet per il mondo dei web service per la creazione di applet e applicazioni per il mondo desktop per la creazione di Xlet per dipositivi mobile sempre connessi per la creazione di Midlet per dispositivi mobile limitatamente connessi CDC = Connected Device Configuration CLDC = Connected Limited Device Configuration

52 Non solo Java Google fornisce agli sviluppatori due ulteriori strumenti per lo sviluppo di applicazioni: Scripting Layer for Android (SL4A): supporto ai più diffusi linguaggi di script (JavaScript, Python, Perl, JRuby, Lua) per lo sviluppo di applicazioni Android Native Development Kit (NDK): sviluppo di applicazioni in codice nativo (C/C++)

53 Versioni di Java 2/2 Processori da 32bit Memoria da 2MB + 2,5MB JVM KVM JAVA JAVAME MECDC CDC JAVA JAVAME MECLDC CLDC >= 512 KB >= 128 KB Memoria java >= 256 KB >= 32 KB Memoria runtime JAVA JAVAEE EE Enterprise Enterprise Edition Edition JAVA JAVASE SE Standard Standard Edition Edition Processori da 16bit Memoria da 40Kb + 20Kb

54 API Java Java EE Java SE Java ME CDC Java ME CLDC CDC e CLDC possono supportare API Java esterne a Java SE. Come conseguenza si potrebbe avere un programma Java che viene eseguito correttamente su Desktop, ma non vi sono garanzie che sia eseguito anche su dispositivi che supportano solo ME

55 JavaME e Android 1/3 Configurazioni: JavaME supporta due classi di micro-dispositivi e offre soluzioni standardizzate per ognuna di esse. Android supporta una sola classe e non è possibile eseguirlo su dispositivi limitati Comprensibilità: Android è pensato per un unico modello di dispositivo e quindi utilizza una UI adattabile. JavaMe dispone di modelli di UI differenti per device: MIDlets, Xlets, AWT e Swing: include più di 20 JSR (Java Specification Request)

56 JavaME e Android 2/3 Reattività: La DVM è maggiormente ottimizzata e più reattiva se paragonata alla JVM su uno stesso dispositivo. In realità dovremmo paragonare la DVM alla KVM ma ciò non è possibile perchè questa è pensata per dispositivi di basso profilo. Compatibilità con JAVA: a causa della DVM, Android esegue solo bytecode.dex e non java: è sempre possibile compilare il codice Java in standard Java Class, pur non essendo possibile eseguirne direttamente il bytecode.

57 JavaME e Android 3/3 Scelta: JavaME è ampliamente supportato in quanto diffuso su moltissimi dispositivi mobili, ma l'uniformità, il costo e la facilità nello sviluppo fanno migrare ogni giorno molti programmatori Java verso Android. Supporto JavaSE: se paragonato al supporto di JAVAME-CDC, il supporto di Android a JavaSE è più completo, fatta eccezione per AWT e Swing.

58 Android e Dalvik VM Google ha quindi preso un sottoinsieme delle librerie JAVA, (poi delle Apache Harmony 2007), ha aggiunto alcuni propri package specifici per l'utilizzo in dispositivi mobili e ha definito un proprio formato bytecode ottimizzato per ridurre al minimo l'occupazione di memoria. La macchina virtuale in grado di eseguire questo bytecode come detto si chiama Dalvik VM, e non essendo una macchina virtuale Java ME non è previsto il pagamento di nessuna royalty.

59 Confronto tra le API Cercheremo adesso di fare un rapido confronto tra le API di Java SE e quelle di Android. Elencheremo prima quelle supportate anche in Android che possono essere quindi utilizzate senza modificare eventuale codice già scritto in linguaggio Java. Successivamente elencheremo quelle che sono state rimosse e magari sostituite da altre ritenute migliori.

60 API estese di Java SE supportate in Android javax.crypto javax.net javax.security javax.sound javax.sql javax.xml.parsers org.w3c.dom (tranne i sotto-package) org.xml.sax

61 API di Java SE NON supportate in Android 1/2 java.applet java.awt java.beans java.lang.management java.rmi

62 API estese di Java SE NON supportate in Android (1/2) javax.accessibility javax.activity javax.imageio javax.management javax.naming javax.print javax.rmi javax.security.auth.kerberos javax.security.auth.spi javax.security.sasl

63 API estese di Java SE NON supportate in Android (2/2) javax.swing javax.transaction javax.xml (tranne javax.xml.parsers) org.ietf.* org.omg.* org.w3c.dom.* (i sotto-package)

64 Java ME Java ME viene attualmente considerato quasi obsoleto, in quanto presenta potenzialità molto ridotte e non supporta molte delle tecnologie che sono state sviluppate negli ultimi anni. Sebbene sia stato sviluppato da Sun Microsystems con molte ambizioni, non è mai riuscito ad uscire dalla nicchia dei videogiochi. Non viene considerato un sistema operativo per smartphone, ovvero telefoni con funzionalità simili a quelle di un PC.

65 Conclusioni In questa lezione abbiamo visto le differenze principali le API di Java e quelle di Android.

66 Sistemi Embedded - Android Lezione n. 4: La macchina virtuale Dalvik SEMM2013

67 Introduzione In questa lezione tratteremo della macchina virtuale Dalvik, ottimizzata da Google per l'esecuzione su dispositivi mobili. SEMM2013

68 Perché una VM? Quando nacque Java venne coniato lo slogan Write once, run everywhere, ovvero scrivi il programma una volta e poi lo esegui su qualunque dispositivo. Questo avviene perché la macchina virtuale è uno strato software che astrae l'hardware sottostante, mettendo a disposizione del bytecode una macchina sempre uguale. Android, come anticipato usa un approccio simile, e la sua VM si chiama Dalvik. SEMM2013

69 Requisiti per Dalvik La Dalvik VM è stata progettata da Dan Bornstein, ingegnere di Google originario della città di Dalvik in Islanda. I requisiti che a Dan Bornstein sono stati imposti per la progettazione di questa Virtual Machine sono stati la capacità di girare su un sistema con una CPU lenta, con poca memoria, con un sistema operativo senza area di swap e il tutto alimentato solo da una batteria ed un application runtime di tipo sandbox. SEMM2013

70 Il problema della memoria Inizialmente, nella progettazione della DVM, si è supposto di avere a disposizione un tipico smartphone con soli 64 MByte di memoria. Questo spazio dopo l'avvio del kernel Linux si riduce a 40 MByte, che diventano 20 dopo l'avvio dei servizi di alto livello. Si è visto inoltre che la libreria C standard (libc) è molto vasta e occupa circa 10 Mbyte. SEMM2013

71 Java versus Dalvik fonte: oreilly.com SEMM2013

72 Dalvik Executable Un primo lavoro che è stato fatto è stato quello di specificare un formato (dex o Dalvik Executable) in grado di risparmiare spazio rispetto al bytecode di Java: SEMM2013

73 Confronto tra bytecode Utilizzando questo nuovo formato si ottengono già dimensioni del bytecode molto ridotte. Ad esempio le librerie di sistema, rispetto al 100% originario, diventano grandi il 50% quando compresse da Java in formato JAR e 48% in formato dex non compresso (non richiede decompressione). L'applicazione browser passa invece dal 100% originario e 49% compresso in JAR a solo il 44% in formato dex non compresso. SEMM2013

74 Separazione della memoria Un altro accorgimento adottato in Dalvik rispetto a Java è la separazione della memoria nel momento in cui avviene una chiamata di sistema fork(). A differenza di quanto accade in Java, ogni applicazione Android ha un proprio processo ed una propria istanza della DVM. La DVM è stato progettata in modo tale che un dispositivo possa eseguire molte VM in maniera efficiente. Anche il meccanismo di Garbage Collector di ogni applicazione deve essere indipendente. SEMM2013

75 Efficienza Per quanto riguarda la CPU si è supposta una frequenza compresa fra i 250 e i 500 MHz, con un bus di sistema a 100 MHz e una cache dati di 16 o 32 KByte. Inizialmente (fino alla 2.1) la DVM non supportava la compilazione Just-In-Time (JIT) perché si pensava non necessaria poiché per i calcoli più impegnativi (grafica e codec audio/video) erano presenti dei coprocessori ed in ultima istanza si poteva ricorrere alla JNI (Java Native Interface). Dalla versione 2.2 di Android la DVM possiede un Just-In-Time (JIT) compiler. SEMM2013

76 Installazione Nel momento in cui si installa nel sistema una nuova applicazione Android vengono eseguite le seguenti operazioni: Per sicurezza si effettua la verifica che tutti gli indici interni ai file dex siano corretti. Anche se non si utilizzano tecniche JIT il codice viene ottimizzato ad esempio spostando i dati dove conviene averli e ricopiando alcune funzioni che conviene avere inline. SEMM2013

77 VM basata su stack o su registri? La Java VM è stack-based, ovvero tutte le operazioni agiscono sugli operandi che stanno sulla cima dello stack. La Dalvik VM è invece stata progettata registerbased, ovvero le operazioni agiscono su alcuni registri virtuali. Le statistiche di Google dicono che in questo modo si esegue il 30% di istruzioni in meno. Anche il numero di accessi in memoria si riduce. SEMM2013

78 Sicurezza Un'applicazione, per default, non ha il permesso di eseguire alcuna operazione che può avere impatto negativo su altre su altre applicazioni, sul sistema operativo o sull'utente. Ciò comprende la lettura e la scrittura di dati privati dell'utente (contatti, ,...), leggere o scrivere i file relativi al altre applicazioni, accedere alla rete, mantenere il dispositivo attivo, etc. SEMM2013

79 Il processo Zygote 1/2 In fase di inizializzazione del sitema viene creato un processo denominato Zygote. Esso si occupa di: Caricare le Core system libraries dex-files Inizializzare la Dalvik VM Nel momento in cui viene avviata una Activity il processo Zygote subisce una fork e successivamente: Sono caricati i dex files specifici dell'applicazione Vengono condivise le Core System Libraries SEMM2013

80 Il processo Zygote 2/2 Il processo Zygote rimane in esecuzione in background. All'avvio di una nuova applicazione, il processo esegue una fork: uno dei due processi creati rimane in esecuzione in background l'altro inizializza un nuovo esemplare di DVM. Se durante l'esecuzione di questa applicazione deve essere lanciata una ulteriore applicazione, il processo in background esegue una secondo fork. In ogni momento è quindi disponibile un processo Zygote per l'inizializzazione di una nuova DVM. SEMM2013

81 Conclusioni Anche se all'apparenza la macchina virtuale usata da Android può sembrare un clone di quella Java, ovvero uno stratagemma usato da Google per non pagare royalties a Sun Microsystems, in realtà è stato fatto un accurato lavoro di ottimizzazione per permettere che le applicazioni Android possano essere eseguite abbastanza velocemente anche su telefoni con risorse limitate, in particolare con poca RAM. SEMM2013

82 Sistemi Embedded - Android Lezione n. 5 Installare l'sdk

83 Introduzione Per sviluppare una applicazione per Android è necessario scaricare l'sdk dal sito ufficiale. SDK sta per Software Development Kit e contiene una serie di tool ed un emulatore per testare le applicazioni create direttamente sul proprio PC. 83

84 Prerequisiti 10/2012 Android può essere installato su Windows (XP,Vista, 7), Linux (Ubuntu dalla 8.04) e Mac OS X (dalla /x86). Bisogna avere installato il Java Development Kit (JDK) versione 6 (non è sufficiente il runtime-environment JRE) L'IDE fortemente consigliato è Eclipse (dalla Helios o successivo) insieme al JDT plugin Infine, è necessario installare l'adt (Android Development Tools) plugin 84

85 Download 10/2012 Il sito di riferimento per gli sviluppatori Android è Partendo dalla home page bisogna: andare alla sezione SDK, cliccare su Download the SDK, accettare le condizioni di licenza e scaricare il file ZIP relativo al proprio sistema operativo. L'ultima versione corrente è: Android SDK r20 (API Level 16) 85

86 Installare l'sdk 1/2 In realtà l'sdk non prevede una installazione vera e propria: è sufficiente scompattare il file ZIP in una cartella, il cui path sarà utilizzato in Eclipse. Per es.: Windows: C:\apps\android-sdk-windows Linux: /home/username/androidsdk_linux_86 Mac OS X: /Users/username/android_sdk_86 Per Windows è disponibile un installer. A questo punto è possibile già sviluppare, debuggare, interagire con l'emulatore da riga di comando. 86

87 Installare l'sdk 2/2 Se si vuole lavorare a riga di comando è necessario aggiungere alla variabile di ambiente PATH il percorso completo della sottodirectory tools e platform-tools 87

88 Installare l'sdk (MAC OS X) 1/2 Il file in cui indicare il path è ~/.bash_profile Per verificare se esiste è sufficiente aprire un Terminale nella home e digitare ls -a Se esiste editarlo con il comando: open -a TextEdit.bash_profile Aggiungendo le seguenti righe: export PATH=$PATH:<sdk>/platform-tools export PATH=$PATH:<sdk>/tools 88

89 Installare l'sdk (MAC OS X) 2/2 Altrimenti, se non esiste, nella home digitare: echo 'export PATH=<sdk>/plaftom-tools:$PATH' >> ~/.bash_profile echo 'export PATH=<sdk>/tools:$PATH' >> ~/.bash_profile 89

90 Installare il plugin ADT Se invece si preferisce lavorare all'interno di un ambiente integrato di sviluppo è possibile installare il plugin ADT (Android Development Tools) all'interno dell'ide Eclipse. Per fare ciò all'interno di Eclipse bisogna selezionare Help Install New Software... ed aggiungere il seguente sito: https://dl-ssl.google.com/android/eclipse/ 90

91 Configurare il plugin L'unica configurazione richiesta dal plugin ADT per funzionare correttamente all'interno di Eclipse consiste nel fornirgli il percorso completo all'interno del quale è stato scompattato l'sdk. Per fare ciò in Eclipse bisogna selezionare: MAC: Eclipse > Preferences.. Altri: Window > Preferences... E poi Browse... e selezionare la cartella dell'sdk utilizzata al passo precedente per la scompattazione. 91

92 Aggiornare il plugin Periodicamente potrebbero essere rilasciati aggiornamenti del plugin ADT per Eclipse. Si suggerisce pertanto di controllare di tanto in tanto selezionando Help Software Updates e provando ad aggiornare il plugin di Android. 92

93 Aggiornare l'sdk Mediante l'android SDK Manager (che può essere richiamato sia dall'ambiente Eclipse, sia da riga di comando (Android) è possibile seguire gli aggiornamenti dell'sdk, nonchè installare esempi, documentazione e le importanti Google API. Inoltre l'emulatore deve essere lanciato almeno una volta a riga di comando con l'opzione -wipedata in modo da cancellare i dati relativi alle esecuzioni precedenti. 93

94 Test installazione 1/2 Tramite riga di comando digitiamo il comando: android Sarà visualizzato l' Android SDK Manager. Avremmo ottenuto lo stesso risultato utilizzando Eclipse mendiante la voce di menu: Window>Android SDK Manager oppure sulla relativa icona. Nota: le Google API 94

95 Test installazione 2/2 Tramite riga di comando digitiamo il comando: android avd Sarà visualizzato l' Android Virtual Devices Manager (AVD Manager). Avremmo ottenuto lo stesso risultato utilizzando Eclipse mendiante la voce di menu: Window>Android AVD Manager oppure sulla relativa icona. 95

96 Conclusioni In questa lezione abbiamo visto come installare, configurare ed aggiornare il Software Development Kit (SDK) di Android ed il relativo plugin per l'ide Eclipse. 96

97 Sistemi Embedded - Android Lezione n. 6: Strumenti di sviluppo 97

98 Introduzione In questa lezione verranno elencati e descritti brevemente i principali strumenti di sviluppo forniti con l'sdk di Android, in modo da prendere dimestichezza con ognuno di essi. 98

99 Emulatore Android L'SDK include l'emulatore di un dispositivo mobile in grado di girare su un comune PC. L'emulatore permette di testare le applicazioni sviluppate senza disporre del dispositivo fisico. 99

100 Caratteristiche dell'emulatore L'emulatore emula il comportamento hardware e software di un tipico smartphone, con la sola eccezione di non essere in grado di effettuare vere telefonate. In compenso le sue capacità di debugging fanno sì che tramite una console testuale sia possibile leggere il log del kernel e simulare l'arrivo di interruzioni (come ad esempio la ricezione di un SMS). 100

101 Funzionamento interno L'emulatore Android è basato su QEMU (un noto emulatore open-source) e fornisce l'emulazione di: una CPU ARMv5 e la corrispondente MMU (Memory Managment Unit) un display LCD con 64K colori una o più tastiere un chip audio con input e output l'accesso a partizioni sulla memoria Flash un modem GSM, inclusa una SIM simulata una video-camera, utilizzando la webcam del pc 101

102 Screen Configuration Low density (120), ldpi Medium density (160), mdpi High density (240), hdpi 480x640 Extra high density (320), xhdpi Normal scree WQVGA400 n (240x400) WQVGA432 (240x432) HVGA (320x480) WVGA800 (480x800) WVGA854 (480x854) 600x x960 Large screen WVGA800 (480x800) WVGA854 (480x854) WVGA800 (480x800) WVGA854 (480x854) 600x1024 Extra Large screen 1024x600 WXGA (1280x800) 1024x x x x x x x x1600 Small screen QVGA (240x320) 102

103 Emulator Keyboard Key Menu (left softkey) F2 or Page-up button Star (right softkey) Shift-F2 or Page Down Back ESC Call/dial button F3 Hangup/end call F4 button Switch to next layout KEYPAD_9, Ctrl-F12 orientation (for example, portrait, landscape) Toggle cell networking on/off F8 Toggle code profiling F9 (only with trace startup option) Toggle fullscreen mode Alt-Enter KEYPAD_PLUS, Ctrl-5 Toggle trackball mode F6 Audio volume down button KEYPAD_MINUS, Ctrl-F6 Enter trackball mode Delete temporarily (while key is pressed) Camera button Ctrl-KEYPAD_5, Ctrl-F3 Switch to previous layout orientation (for example, portrait, landscape) KEYPAD_7, Ctrl-F11 Search F5 Power button F7 Audio volume up button DPad left/up/right/down KEYPAD_4/8/6/2 DPad center click KEYPAD_5 Onion alpha increase/decrease KEYPAD_MULTIPLY(*) / KEYPAD_DIVIDE(/) 103

104 Attività 1/2 Creare un nuovo AVD (es. Android2.3.3) Avviarlo (da Eclipse e riga di comando) Descrivere le principali caratteristiche Utilizzare le keyboard Key Chiusura Individuare l'immagine e i file di configurazione dell'avd creato 104

105 Attività 2/2 Interagire con l'avd utilizzando ad es.: Chiamata SMS Batteria Tramite DDMS Tramite riga di comando: telnet localhost 5554 gsm call power status full sms send Ciao! 105

106 L'Android Debug Bridge (o ADB) Permette inoltre di accedere a riga di comando al dispositivo virtuale e reale e di metterlo in collegamento con un debugger standard. Permette di installare i file.apk di una applicazione sull'emulatore o sul dispositivo. 106

107 Attività 1/2 Visualizzare gli AVD o dispositivi reali connessi: adb devices Aprire una shell direttamente sull'emulatore adb shell adb push nome_file_da_mandare <percorso-inemulatore>/nome_file_destinazione adb pull <percorso-in-emulatore>/nome_file nome_file_destinazione adb kill-server adb start-server 107

108 DDMS Il Dalvik Debug Monitor Service (o DDMS) permette di gestire i processi in esecuzione sull'emulatore o sul dispositivo reale. E' possibile killare i processi, selezionare uno specifico processo da debuggare, generare informazioni di trace, visualizzare le informazioni relative allo heap ed ai thread, catturare screenshot dell'emulatore o del dispositivo, etc. 108

109 Hierarchy Viewer Lo Hierarchy Viewer permette di debuggare e ottimizzare l'interfaccia utente. La Layout View fornisce una rappresentazione visuale della gerarchia di View dell'applicazione. La Pixel Perfect View fornisce invece una vista ingrandita del display emulato. 109

110 Layout View 110

111 Pixel Perfect View 111

112 Draw 9-patch 1/3 E' uno strumento WYSIWYG che permette di creare cornici 9-patch. Si tratta di bitmap ridimensionabili divise in 9 sezioni: i 4 angoli non vengono mai scalati, i lati della cornice vengono scalati solo in una dimensione e il solo centro dell'immagine viene scalato in entrambe le dimensioni. 112

113 Draw 9-patch 2/3 113

114 Draw 9-patch 2/3 114

115 AAPT L'Android Asset Packaging Tool (o AAPT) è lo strumento che permette di creare i file.apk contenenti i binari e le risorse delle applicazioni Android. E' lo strumento che viene automaticamente chiamato da Eclipse per svolgere questo lavoro, ma può anche essere invocato a riga di comando. 115

116 Traceview Traceview fornisce una rappresentazione grafica dei log di esecuzione salvati dall'applicazione. Il Timeline Panel mostra in quale momento ogni thread o metodo è stato avviato e fermato. Il Profile Panel fornisce un riepilogo di cosa è avvenuto all'interno di un metodo. 116

117 Timeline Panel 117

118 Profile Panel 118

119 mksdcard mksdcard è uno script che facilita il compito di creare una immagine di disco che possa essere usata nell'emulatore. Simula la presenza di una scheda di memoria esterna (ad esempio SD-Card). L'immagine di disco viene creata in formato FAT

120 The Monkey Il cosiddetto UI/Application Exerciser Monkey (letteralmente la scimmia che esercita l'interfaccia grafica e l'applicazione ) è un programma che gira sull'emulatore o sul dispositivo reale sequenze pseudo-casuali di eventi (come i click e vari tocchi dello schermo) come pure vari tipi di eventi di sistema. The Monkey è usato per stressare l'applicazione che si sta sviluppando, in maniera casuale ma ripetibile. 120

121 Conclusioni In questa lezione abbiamo descritto gli strumenti messi a disposizione dall'sdk che possono essere particolamente utili per risolvere specifici problemi. 121

122 Sistemi Embedded - Android Lezione n. 7: Sviluppo di una applicazione

123 Introduzione Questa lezione mostra il ciclo di sviluppo tipico di una applicazione per Android. Verrà mostrato come creare e compilare un nuovo progetto, e come eseguirlo nell'emulatore. Verrà mostrato il procedimento da usare con Eclipse o su riga di comando. 123

124 Creare un progetto Eclipse passo 1 Per iniziare lo sviluppo di una nuova applicazione per Android bisogna creare un progetto e una configurazione di lancio. Per creare il progetto bisogna ovviamente disporre di Eclipse e del plugin ADT installato correttamente. 124

125 Creare un progetto Eclipse passo 2 Il progetto si crea selezionando nell'ordine File New Project Android Android Project. Successivamente dovranno essere definiti il project name, il target, l'activity name, application name ed il package name 125

126 Creare un progetto Eclipse passo 3 126

127 Creare un progetto Eclipse passo 4 127

128 Creare un progetto Eclipse passo 5 128

129 Creare un Android Virtual Device Per poter eseguire la nostra applicazione è necessario disporre di un Android Virtual Device (AVD) Per crearne uno tramite Eclipse andare su Window Android Sdk and AVD Manager, oppure richiamando il tool Emulator senza argomenti da prompt dei comandi 129

130 Creare la configurazione di lancio Bisogna creare una configurazione di lancio in Eclipse selezionando il menu Run e poi uno dei quattro tra Open Run Dialog, Open Debug Dialog, Run Configurations oppure Debug Configurations. Dopo avere assegnato un nome alla configurazione specificare il nome del progetto, l'activity da lanciare ed eventuali parametri da passare all'emulatore. 130

131 Eseguire e debuggare l'applicazione Adesso è possibile avviare l'applicazione selezionando Run Run oppure Run Debug a seconda di quello che si intende fare. Questa azione farà riferimento alla configurazione di lancio usata più di recente. I passi che adesso verranno eseguiti saranno nell'ordine l'avvio dell'emulatore, la compilazione del progetto (solo in caso di modifiche) e l'installazione dell'applicazione nell'emulatore. 131

132 Sviluppo con altri IDE L'ambiente di sviluppo raccomandato per sviluppare una applicazione Android è Eclipse con il plugin ADT installato, ma è possibile utilizzare altri metodi. A partire dalla versione 9 l'ide IntelliJ IDEA di JetBrains integra un supporto all'android SDK. E' possibile utilizzare l'ide Eclipse senza avere installato il plugin ADT. In tutti i casi i tool contenuti nell'sdk forniscono gli strumenti per configurare, compilare e debuggare una applicazione. 132

133 Creare un progetto da riga di comando Per creare un nuovo progetto da riga di comando si utilizza sempre il tool android: android create project -t <target_id> -n <your_project_name> -p path/to/your/project -a <your_activity_name> -k <your_package_namespace> android create project -t 8 -n prova -p c:\prova -a ActivityDemo -k it.corso.activitydemo Assicurarsi di avere inserito le directory platform-tools/ e tools/ tra le directory della variabile d'ambiente PATH 133

134 File ottenuti 1/3 L'esecuzione del precedente comando produce in output i seguenti file: AndroidManifest.xml è il file di manifesto contenente le informazioni relative al progetto build.xml è un file Ant che può essere usato per compilare l'applicazione a riga di comando src/it/corso/activitydemo.java è il file sorgente che conterrà l'activity specificata. proguard.cfg è utilizzato dal tool proguard che offusca ed ottimizza il codice producendo un.apk di dimensioni ridotte. 134

135 File ottenuti 2/3 default.properties descrive la configurazione del progetto compreso il build target. Non dovrebbe essere editato manualmente. build.properties può essere editato per sovrascrivere le impostazioni di build usate da Ant. Se si usa Eclipse questo file viene ignorato. 135

136 File ottenuti 3/3 gen/ contiene i file.java generati dall'adt come per es. R.java. res/ contiene le risorse dell'applicazione (immagini, stringhe, layout) assets/ inizialmente vuota contiene altri file di risorse come texture o dati cui e non sono associati alle costanti della classe R. libs/ contiene le library utilizzate dall'applicazione 136

137 Directory ottenute Vengono inoltre create le seguenti cartelle: src/ conterrà i sorgenti res/ per le risorse esterne bin/ contiene il file.apk e le altre risorse compilate jni/ contiene il codice nativo sviluppato mediante l'android NDK In realtà tutte le directory anche in seguito possono essere spostate dove si vuole, mentre non è possibile spostare l'sdk perché gli script di build fanno riferimento ad esso. 137

138 Settare l'ambiente per la compilazione Per compilare il progetto a riga di comando è necessario avere installato Apache Ant 1.8 o successivo. Bisogna inoltre settare la variabile d'ambiente JAVA_HOME per puntare correttamente al percorso in cui è installato il JDK; sotto Windows tale percorso NON può contenere spazi, quindi ad esempio non è possibile installare il JDK nella directory predefinita Program Files : set JAVA_HOME=c:\Programmi\Java\ 138

139 Compilare a riga di comando Dopo avere settato la variabile d'ambiente JAVA_HOME è sufficiente spostarsi nella directory che contiene il file build.xml ed eseguire semplicemente ant. Ovviamente ogni volta che si cambia un file sorgente o una risorsa bisogna ricompilare tutto rieseguendo il comando ant. 139

140 Avviare l'emulatore a riga di comando Per eseguire la propria applicazione bisogna innanzitutto caricarla all'interno del file-system del sistema emulato. Per prima cosa bisogna avviare l'emulatore con il comando: Per conoscere gli AVD disponibili (prec. creati): android list Nell'interfaccia grafica dell'emulatore la vecchia versione della propria applicazione non deve essere in primo piano, quindi conviene spostarsi alla pagina principale premendo il pulsante Home. 140

141 Attività 1/2 Per installare la propria applicazione da riga di comando si può utilizzare il comando ADB (con un AVD avviato). La sintassi da usare è adb install bin/<nome_applicazione>.apk Questo comando ricopia il file APK all'interno della directory /data/app dell'emulatore. Accedendo all'emulatore la nostra applicazione apparirà tra quelle installate. 141

142 Attività 2/2 Rimuovere l'applicazione installata Tramite l'emulatore Utilizzando l'adb adb uninstall it.dominio.nomepackage Es: adb uninstall it.corso.helloandroid Verificare l'avvenuta rimozione dell'app 142

143 Conclusioni In questa lezione abbiamo visto come creare un nuovo progetto Eclipse e come eseguire la nostra applicazione all'interno dell'emulatore. Abbiamo inoltre visto come sia possibile effettuare le stesse operazioni anche senza Eclipse, utilizzando solo gli strumenti a riga di comando forniti con l'sdk di Android. 143

144 Sistemi Embedded - Android Lezione n. 8: Anatomia di una applicazione

145 Elementi di base Gli elementi di base per costruire una applicazione Android sono cinque: Activity Intent Broadcast Receiver Service Content Provider 145

146 Activity (1/3) Le Activity sono l'elemento di base più comune. Rappresentano blocchi logici dell'applicazione ed interagiscono con l'utente mediante i dispositivi di input dello smartphone. Serve una Activity per ogni schermata dell'applicazione (es. una per comporre un messaggio, una per consultare la rubrica e una per le configurazioni). Vengono derivate dalla classe base android.app.activity. 146

147 Activity (2/3) La propria Activity derivata mostrerà una interfaccia utente composta da View e risponderà ad eventi. Spostarsi da una schermata all'altra fa avviare una nuova Activity. In certi casi l'activity chiamata restituirà un valore all'activity chiamante (ad esempio una schermata che permette di selezionare una foto restituirà al chiamate la foto scelta). Quando si apre una nuova schermata, quella precedente è messa in pausa e inserita in una pila (activity stack). 147

148 Activity (3/3) L'utente può quindi navigare avanti e indietro tra le schermate aperte nell'activity stack. Per alcune schermate può essere inappropriato rimanere nell'activity stack, e in questo caso è possibile rimuoverle. Android mantiene un activity stack per ogni applicazione lanciata dalla schermata Home. 148

149 Activity - Fragment Con Android 3.0 sono stati introdotti i Fragment. Un Fragment costituisce una porzione di UI di una data Activity con le seguenti proprietà: E' caratterizzata da un proprio ciclo di vita Possiede un proprio input Può essere aggiunto e rimosso mentre l'activity è in esecuzione Per es., una Activity potrebbe includere molti Fragment quando il display è abbastanza ampio, oppure solo alcuni in caso contrario. 149

150 Intent 1/4 L'Intent rappresenta un messaggio in grado di attivare i tre componenti-base di una applicazione: Activity, Service e Broadcast Receiver Un Intent descrive cosa una applicazione vuole che venga fatto. La struttura dati dell'intent si compone dell'azione da effettuare e dei dati su cui agire. Valori tipici per l'azione sono MAIN (la schermata principale dell'applicazione), VIEW, PICK, EDIT etc. 150

151 Intent 2/4 Un Intent può essere Esplicito o Implicito: Esplicito: all'interno del costruttore dell'intent specifichiamo la classe da eseguire (tipicamente una Activity). Nell'esempio seguente è istanziato un Intent in cui è dichiarata una Activity da eseguire. Intent intent = new Intent(this, SubActivity.class); startactivity(intent); 151

152 Intent 3/4 Implicito: rappresenta l'essenza della filosofia Android. Un Intent implicito dichiarata l'azione da eseguire pur senza sapere chi la eseguirà. Nel seguente esempio è dichiarato un Intent mediante cui avviare una Activity che visualizzerà il sito definito nell'uri Uri uri = Uri.parse("http://www.google.com"); Intent it = new Intent(Intent.ACTION_VIEW,uri); startactivity(it); 152

153 Intent 4/4 In generale, potrebbe essere necessario richiedere specifici permission per eseguire un particolare Intent Tali permessi devono essere dichiarati nel manifest.xml, ad esempio: <uses-permission android:name="android.permission.internet" /> 153

154 IntentFilter 1/2 Una classe correlata si chiama IntentFilter. Una Activity che è in grado di mostrare le informazioni di contatto per una persona pubblicherà un IntentFilter nel quale dirà che sa come gestire l'azione VIEW quando essa è applicata a dati che rappresentano una persona. Le Activity pubblicano i loro IntentFilter nel file AndroidManifest.xml. La navigazione da una schermata all'altra viene effettuata risolvendo gli Intent. 154

155 IntentFilter Un IntentFilter sempre presente nella nostra applicazione è il seguente: <activity android:name=".intentsample" <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> La action dichiara che si tratta di un entry point, mentre la category indica che questo entry point può essere listato nell'application Launcher Ovvero, la nostra Activity si rende disponibile nella home per essere eseguita mediante click/tap sull'icona relativa 155

156 Intent - Navigazione Per navigare avanti una Activity chiama startactivity(myintent); Il sistema guarda quindi gli IntentFilter per tutte le applicazioni installate e sceglie l'activity il cui IntentFilter è più appropriato per myintent. La nuova Activity è informata dell'intent, e viene quindi lanciata. 156

157 Intent - Esecuzione a run-time Il fatto di risolvere gli Intent al tempo di esecuzione solo quando startactivity() viene chiamata comporta almeno due benefici principali: Le Activity possono riutilizzare funzionalità di altri componenti semplicemente facendo una richiesta sotto forma di un Intent. Le Activity possono essere sostituite in ogni momento da una nuova Activity con un IntentFilter equivalente. Rif: content/intent.html 157

158 BroadcastReceiver 1/2 Il secondo elemento di base di una applicazione è la classe BroadcastReceiver definita all'interno del package android.content. Viene utilizzato quando si vuole che parte del codice della propria applicazione venga eseguito in risposta ad un evento esterno (es. il telefono squilla, o una connessione dati diventa disponibile, oppure quando è mezzanotte). Affinché un BroadcastReceiver venga chiamato non è necessario che la relativa applicazione sia in esecuzione. 158

159 BroadcastReceiver 2/2 I BroadcastReceiver non hanno interfaccia grafica, ma possono usare il NotificationManager per avvisare l'utente che è successo qualcosa di interessante. Anche i BroadcastReceiver come gli IntentFilter sono registrati nel file AndroidManifest.xml, ma possono essere anche registrati dal sorgente usando la chiamata Context.registerReceiver(). Le applicazioni possono lanciare i broadcast alle altre con Context.sendBroadcast(). 159

160 Service Un altro elemento di base delle applicazioni Android è il Service, ovvero del codice senza interfaccia grafica e sono definiti all'interno del package android.app. Un buon esempio è la riproduzione di un brano musicale: poiché si vuole che la riproduzione continui anche dopo che l'utente ha cambiato schermata, non la si può lasciare eseguire ad una Activity ma bisogna chiamare Context.startService() per eseguirla in background. 160

161 Cosa non è un service Un Service non è un processo separato: in altre parole l'applicazione e il suo servizio sono eseguiti all'interno dello stesso processo (se non altrimenti specificato) Non è un thread: non è uno strumento mediante cui fare eseguire delle attività al di fuori del thread principale 161

162 Cosa è un service Un Service è uno strumento mediante cui l'applicazione vuol comunicare al sistema che una data operazione deve essere eseguita in background anche quando l'utente non sta interagendo direttamente con essa. Uno strumento mediante il quale l'applicazione mette a disposizione di altre applicazioni alcune delle proprie funzionalità. Ciò può essere realizzato invocando una Context.bindService() mediante la quale viene stabilita una connessione tra l'applicazione richiedente ed il servizio richiesto. 162

163 Content Provider L'ultimo elemento di base è il Content Provider, definito all'interno della classe Android.Content Solitamente le applicazioni memorizzano i loro dati all'interno del file-system oppure in un database SQLite, ma se i dati di una applicazione devono essere condivisi con le altre bisogna usare la classe ContentProvider. Un ContentProvider è una classe che implementa un insieme standard di metodi per permettere alle altre applicazioni di salvare e recuperare dati. 163

164 Conclusioni In questa lezione abbiamo visto brevemente le quattro classi alla base di ogni applicazione Android: Activity, Intent, BroadcastReceiver, Service e ContentProvider. 164

165 Sistemi Embedded - Android Lezione n. 9: Ciclo di vita di Activity, Service e Processi

166 Activity 1/3 Pur essendo possibile avviare più applicazioni contemporaneamente soltanto una può occupare il display, mentre le altre saranno nascoste in background Questo è il motivo per cui, il concetto di chiusura è secondario e normalmente non troveremo il punsante Esci 166

167 Activity 2/3 OnCreate(Bundle): e' invocato quando l'activity viene avviata per la prima volta. Il Bundle savedinstancestate serve per riportare l'activity nello stesso stato in cui si trovava la precedente istanza dell'activity terminata. OnStart(): è invocato quando l'activity sta per essere visualizzata onresume(): è invocato non appena l'activity inizia ad "interagire" con l'utente onpause(): è invocato non appena l'activity sta per essere ibernata (per es. e' stata avviata un'altra activity) onstop(): è invocato nel momento in cui l'activity non e' piu' visibile all'utente. 167

168 Activity 3/3 onrestart(): è invocato quando l'activity sta per essere riavviata dopo essere stata precedentemente arrestata ondestroy(): è invocata poco prima che l'activity sia distrutta onsaveinstancestate(bundle): è invocata per salvare lo stato dell'activity onrestoreinstancestate(bundle): è invocata solo se in precedenza è stato salvato uno stato 168

169 Ciclo di vita di un Service Quando viene invocato il metodo startservice() il sistema verifica se tale servizio è in escuzione altrimenti esegue oncreate() Successivamente è invocato il metodo onstartcommand() e il servizio è finalmente nello stato di esecuzione dove rimane fino a quando non sarà richiamato stopservice() oppure stopself(). 169

170 Service 1/2 oncreate(): a differenza delle Activity non presenta alcun parametro. Creato il servizio viene invocato il metodo onstartcommand(). Viene invocato una sola volta. onstartcommand(): invocato questo metodo il servizio resterà in esecuzione e rimarrà in questo stato fino a quando non sarà invocato stopservice() da parte dell'activity che lo ha generato, oppure stopself() da parte del servizio stesso. Può essere invocato più volte in seguito all'esecuzione di onstartservice() da parte dell'activity. 170

171 Service 2/2 ondestroy(): l'invocazione di stopservice() da parte dell'activity produrrà la chiamata di questo metodo del Servizio. In seguito a questa chiamata il servizio sarà eliminato 171

172 Applicazioni e Processi Per ogni applicazione che viene eseguita, Android avvia un nuovo processo Linux Di default, tutti i componenti di una data applicazione (per es. Activity + Service) sono eseguiti all'interno dello stesso processo Se al momento di avviare una applicazione esiste già un processo assegnato ad essa perchè un suo componente è stato eseguito in precedenza, allora tale applicazione sarà eseguita all'interno di questo processo 172

173 Applicazioni e Processi Nel caso in cui la momoria a disposizione per eseguire una applicazione in foreground (visibile all'utente) ovvero per eseguire un importante processo non sia disponibile, allora il sistema può decidere di eliminare uno o più processi in background secondo una logica ben definita Ad ogni processo viene assegnata una sorta di importanza gerarchica in base ai suoi componenti in esecuzione ed al loro stato Ovviamente i processi di minore importanza saranno i primi ad essere eliminati per liberare memoria 173

174 Applicazioni e Processi Sono state definite 5 tipologie di processi ordinate per importanza decrescente: Foreground Process Visible Process Service Process Background Process Empty Process 174

175 Foreground Process I processi Foreground sono quelli che eseguono componenti di interazione con l'utente: Activity in cima allo Stack Azioni di un BroadCastReceiver (OnReceive()) Metodi di callback nella gestione di un servizio come Start(), Create() o Destroy() Normalmente il numero di questo tipo di processi è limitato. Android potrà decidere di eliminarne uno come ultima chance per risolvere il problema di memoria 175

176 Visible Process Sono processi che pur non essendo direttamente visibili all'utente (non possiedono componenti in Foreground, si trovano in uno stato in cui possono comunque avere effetto su quello che l'utente vede visualizzato. Activity non in Foreground che esegue OnPause() Service connesso ad un'activity in Foreground. 176

177 Service Process Sono processi che eseguono Service Pur non interagendo direttamente con l'utente, Android li ritiene più importanti delle Activity in Background L'esempio classico è la riproduzione di un file audio: pur non interagendo direttamente con l'utente, questo accetterà malvolentieri l'interruzione dell'ascolto del brano. Pertanto Android proverà ad eliminare uno o più processi meno importanti prima di eliminare un Service Process 177

178 Background Process Sono processi che si occupano di eseguire Activity non più in Foreground per i quali è stato invocato il metodo OnStop() Il loro numero è in genere superiore a quello delle altre categorie L'eliminazione all'interno di questa categoria tiene in considerazione il criterio di Least Recent Used (LRU) Per questi processi è comunque definito un meccanismo di salvataggio e ripristino 178

179 Empty Process Sono i processi candidati per l'eliminazione. Non eseguono alcun componente Il motivo per cui non vengono eliminati nel momento in cui sono svuotati dai componenti che eseguivano è legato a strategie di caching Gli empty Process più vecchi saranno velocemente eliminati, mentre per quelli più recenti è più probabile che l'utente richiami un suo componente precedentemente visualizzato 179

180 Sistemi Embedded - Android Lezione n. 10: Hello, Android!

181 Introduzione In questa lezione vedremo come applicare i concetti acquisiti nella lezione precedente e creeremo la nostra prima applicazione per Android. Come tradizione la prima applicazione sviluppata in un nuovo linguaggio si chiama Hello World (nel nostro caso Hello Android ) e si limita a visualizzare sullo schermo un messaggio di saluto.

182 Creare il progetto Per creare il progetto Eclipse bisogna selezionare File New Project Android Project :

183 Dettagli del progetto

184 Nome progetto e Activity Il nome del progetto e il nome dell'activity possono coincidere o meno: nell'esempio il progetto è HelloAndroid e l'activity è HelloAndroidActivity. La differenza è che il progetto dà il nome alla directory che lo conterrà, mentre il nome dell'activity è il nome della classe che deriveremo dalla classe Activity di Android e che sarà la classe principale dell'applicazione.

185 Nome del package Bisogna specificare il namespace sotto il quale si vuole che risieda il nostro codice sorgente, seguendo le stesse regole del linguaggio Java. Poiché è importante che nel sistema il nome del package sia unico rispetto a tutti quelli installati nel sistema, si usa un nome di package in stile nome di dominio. Nell'esempio è stato utilizzato it.corso.

186 Nome dell'applicazione L'ultimo dettaglio da specificare al momento della creazione del progetto è l'application Name: questo è il nome dell'applicazione che apparirà sia come descrizione nell'elenco di applicazioni installate che sulla barra del titolo quando la nostra applicazione sarà in esecuzione, quindi è importante che si tratti di un nome facilmente comprensibile: nel nostro caso HelloAndroid. Può contenere spazi e punteggiatura.

187 AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="it.corso.helloandroid" android:versioncode="1" android:versionname="1.0"> <uses-sdk android:minsdkversion="8" /> <application <activity android:name=".helloandroidactivity" <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> </application> </manifest>

188 Codice autogenerato Dopo avere cliccato su Finish il file HelloAndroidActivity.Java conterrà il seguente codice: package it.corso.helloandroid; import android.app.activity; import android.os.bundle; public class HelloAndroidActivity extends Activity { /** Called when the activity is first created. public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); } }

189 Codice modificato package it.corso.helloandroid; import android.app.activity; import android.os.bundle; import android.widget.textview; public class HelloAndroidActivity extends Activity { /** Called when the activity is first created. public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); TextView tv = new TextView(this); tv.settext("hello, Android!"); setcontentview(tv); } }

190 View e TextView In Android le interfacce utente sono composte da gerarchie di classi dette View. Una View è semplicemente un oggetto che può essere disegnato, come un radio button, una animazione o (come nel nostro caso) una etichetta di testo. Il nome della sottoclasse della classe View che permette di gestire il testo è semplicemente TextView.

191 Creazione della TextView Per creare una TextView si procede come si fa di solito in Java invocando il costruttore: TextView tv = new TextView(this); L'argomento passato al costruttore deve essere una istanza del Context di Android, dove il Context è semplicemente un handle che ci permette di accedere al sistema (ad esempio per risolvere risorse, ottenere l'accesso a database e preferenze e così via).

192 Metodi di TextView Poiché la classe HelloAndroid è derivata da Activity che a sua volta è derivata da Context, allora al costruttore di TextView possiamo passare this ovvero la nostra istanza di HelloAndroid. Possiamo poi invocare un metodo di TextView per dirgli quale deve essere il testo da visualizzare: tv.settext("hello, Android");

193 Collegamento al display Dopo avere creato la TextView e averle detto quale testo mostrare, l'ultimo passo consiste nel collegare questa TextView con lo schermo: setcontentview(tv); Questo metodo di Activity indica al sistema quale View deve essere associata all'interfaccia grafica dell'activity stessa (in questo caso una TextView). Se non viene mai invocato l'activity mostrerà solo uno schermo vuoto.

194 Eseguire Hello Android Per eseguire l'applicazione a seconda della versione di Eclipse bisogna selezionare Run Open Run Dialog oppure Run Run Configurations :

195 Personalizzare la configurazione Selezionare dal menu Android Application New_configuration. Assegnare un nome significativo alla nuova configurazione, per esempio Hello, Android. Selezionare il progetto HelloAndroid. Selezionare l'activity principale del progetto, ovvero com.android.hello.helloandroid. Il modulo compilato sarà:

196 Configurazione di lancio

197 Esecuzione Infine premendo il pulsante Run si otterrà: Durante l'avvio, la finestra console dell'ide ci comunica passo passo le operazioni in corso:

198 Commenti Come si vede nell'immagine precedente, la scritta Hello, Android viene mostrata due volte. La scritta più in alto è il nome dell'applicazione mostrato sulla barra del titolo; è la stringa che abbiamo scelto come Application Name quando abbiamo creato il progetto. Invece la seconda scritta è il testo che abbiamo associato alla TextView.

199 Conclusioni In questa lezione abbiamo visto come creare la nostra prima applicazione. Abbiamo messo in pratica quanto appreso alla lezione precedente riguardo allo sviluppo e all'esecuzione di una nuova applicazione per Android. Abbiamo inoltre iniziato a prendere dimestichezza con le classi Context, Activity, View e TextView.

200 Sistemi Embedded - Android Lezione n. 11: Elenco dei package

201 Introduzione In questa lezione vedremo l'elenco completo dei package Android che raggruppano le classi che è possibile utilizzare per sviluppare una applicazione utilizzando il linguaggio di programmazione Java.

202 android Il package android di livello più alto contiene due classi relative alle risorse usate dalle applicazioni. Contiene la classe R relativa alle risorse. Contiene inoltre la classe Manifest relativa al file di manifesto dell'applicazione.

203 android.app Il package android.app contiene molte classi usate per incapsulare il modello di applicazione di Android. Contiene ad esempio la classe Activity, usata più volte durante questo corso. Contiene inoltre la classe Dialog usata per le finestre di dialogo. Contiene anche la classe Service usata per i servizi eseguiti in background.

204 android.content Il package android.content contiene le classi usate per accedere e pubblicare dati sul dispositivo. Contiene la classe Intent che è la descrizione astratta di una operazione da compiere. Contiene inoltre la classe di base BroadcastReceiver dalla quale si derivano le classi in grado di ricevere gli Intent. Contiene l'interfaccia Context per accedere le informazioni globali dell'applicazione.

205 android.database Il package android.database contiene le classi usate per esplorare i dati restituiti da un ContentProvider. Il sottopackage android.database.sqlite contiene le classi che una applicazione può utilizzare per gestire il proprio database SQLite. Contiene ad esempio le classi SQLiteDatabase, SQLiteOpenHelper e SQLiteQuery.

206 android.graphics Il package android.graphics fornisce strumenti per la grafica di basso livello usati per disegnare lo schermo direttamente. Contiene ad esempio le classi Bitmap, Canvas, Color, Matrix, NinePatch, Paint, Picture, Point, Rect e Region. Il sottopackage android.graphics.drawable fornisce la classe Drawable che contiene i generici metodi usati per disegnare un oggetto.

207 android.hardware Il package android.hardware fornisce il supporto per l'hardware non necessariamente presente su tutti i dispositivi Android. Fornisce ad esempio la classe Camera usata per interagire con la fotocamera (opzionale sui dispositivi Android). Fornisce anche la classe SensorManager con la quale è possibile interagire coi sensori (accelerometro, giroscopio, etc.), anch'essi opzionali.

208 android.location Il package android.location fornisce le classi che permettono di gestire i servizi basati sulla posizione. Fornisce ad esempio la classe Location che memorizza la posizione geografica in un certo momento. Fornisce anche la classe Address, ovvero una stringa che rappresenta un indirizzo.

209 android.media Il package android.media fornisce le classi che permettono di gestire vari formati audio e video. Fornisce la classe MediaPlayer usata per riprodurre un file multimediale. Fornisce la classe MediaRecorder usata per registrare audio e video dal proprio dispositivo. La classe Ringtone permette di interagire con le suonerie presenti sul dispositivo.

210 android.net Il package android.net permette di interagire con la rete in aggiunta alle normali API java.net. Fornisce ad esempio la classe DhcpInfo per leggere i risultati di una richiesta DHCP. La classe NeworkInfo descrive lo stato delle interfacce di rete. Il sotto-package android.net.http fornisce le classi per gestire i certificati SSL. Il sotto-package android.net.wifi fornisce le classi per gestire le funzioni Wi-Fi.

211 android.opengl Il package android.opengl fornisce le classi per gestire la grafica OpenGL. La classe GLU contiene le GL Utilities. La classe Matrix permette di gestire le matrici 4x4 usate da OpenGL.

212 android.os Il package android.os fornisce i servizi di base di un sistema operativo, come il message passing e la Inter-Process Communication. Fornisce le classi BatteryManager e PowerManager per gestire il consumo. Fornisce la classe Handler in grado di gestire i messaggi ricevuti. Fornisce la classe Message che definisce il messaggio che può essere mandato a un Handler.

213 android.preference Il package android.preference contiene le classi che gestiscono le preferenze di una applicazione e ne implementano l'interfaccia grafica. Fornisce infatti la classe di base Preference. Fornisce poi le varie classi CheckboxPreference, DialogPreference, EditTextPreference, ListPreference e RingtonePreference.

214 android.provider 1/2 Il package android.provider fornisce le classi di utilità usate per accedere ai Content Provider forniti da Android. E' l'unico strumento a disposizione delle applicazione per condividere dati Non esiste un'area comune all'interno della quale i package possono leggere e/o scrivere i dati

215 android.provider 2/2 Fornisce il Contacts provider che implementa la rubrica. Fornisce il MediaStore provider che contiene i meta-dati di tutti i file multimediali. A partire dalla versione 4.0 (API 14) è fornisce anche il Calendar provider

216 android.sax Il package android.sax fornisce un framework che permette di scrivere gestori SAX robusti ed efficienti. Fornisce ad esempio la classe Element che descrive un singolo elemento XML. Fornisce la classe RootElement che descrive l'elemento XML radice.

217 android.telephony Il package android.telephony fornisce le API per monitorare le informazioni di base del telefono, come il tipo di rete e lo stato della connessione, più alcune utilità usate per manipolare stringhe contenenti numeri di telefono. Il sottopackage android.telephony.gsm fornisce le API per utilizzare caratteristiche specifiche del servizio GSM, come i messaggi SMS.

218 android.test Il package android.test è un framework per scrivere test case per Android. Altre classi utili per i test sono contenute nei sotto-package android.test.mock e android.test.suitebuilder.

219 android.text Il package android.text contiene classi usate per la visualizzazione del testo sullo schermo. Fornisce la classe AutoText che accede un dizionario di frequenti errori di digitazione. Fornisce la classe Html che processa stringhe HTML e le trasforma in testo visualizzabile sullo schermo con lo stile corretto. Include anche diversi sotto-package (method, style e util).

220 android.util Il package android.util fornisce diversi metodi di utilità, ad esempio metodi di conversione di stringhe e numeri. Fornisce la classe TimeUtils che permette di manipolare data e ora. Fornisce la classe Xml che contiene metodi di utilità per gestire file XML.

221 android.view Il package android.view fornisce classi che espongono interfacce utente di base per disegnare sullo schermo e interagire con l'utente. Fornisce ad esempio le classi Menu, SubMenu e MenuItem usate per gestire i menu. Il sotto-package android.view.animation contiene classi usate per gestire semplici animazioni che possono essere poi applicate a View, superfici o altri oggetti.

222 android.webkit Il package android.webkit fornisce gli strumenti per navigare in rete con un browser. Fornisce ad esempio la classe URLUtil che fornisce metodi di utilità per gestire gli URL. Fornisce la classe Plugin per la gestione dei plugin del browser. Fornisce la classe WebView che è un oggetto View incorporabile nella propria applicazione e capace di mostrare pagine web.

223 android.widget Il package android.widget contiene molti elementi grafici che possono essere mostrati sullo schermo dell'applicazione. Fornisce ad esempio le classi Button, Checkbox, EditText, RadioButton, Scroller, AnalogClock e DigitalClock.

224 Altri package di Java Come visto in precedenza, in Android sono anche supportati molti package appartenenti alla API di Java: java.awt.font, java.io, java.lang, java.math, java.net, java.nio, java.security, java.sql, java.text e java.util. Sono anche supportati alcuni package estesi di Java: javax.crypto, javax.microedition.khronos.egl, javax.microedition.khronos.opengles, javax.net, javax.security, javax.sql e javax.xml.

225 Ulteriori package Android supporta inoltre ulteriori package disponibili per Java ma esterni alla piattaforma di Sun Microsystems. Ad esempio org.apache.http, org.json, org.w3c.dom, org.xml.sax, junit.framework e junit.runner.

226 Conclusioni In questa lezione abbiamo elencato tutti i package che raggruppano le classi sviluppate appositamente per la piattaforma Android. Abbiamo inoltre visto brevemente altri package open-source che sono stati integrati nel progetto, provenienti principalmente da Java e dal progetto Apache.

227 Sistemi Embedded - Android Lezione n. 12: Implementare una interfaccia utente

228 Introduzione In questa lezione vedremo come implementare una interfaccia utente sullo schermo di Android. Vedremo gli elementi di base visualizzabili sullo schermo ed i layout che permettono di disporre i vari elementi dell'interfaccia grafica. 228

229 Gerarchia di elementi dello schermo Come visto più volte durante questo corso l'elemento di base di una applicazione sono gli oggetti della classe android.app.activity. Una Activity può fare molte cose, ma di per sé non ha associata una schermata. Per assegnare ad una activity una interfaccia grafica si lavora con oggetti del tipo View e Viewgroup. 229

230 android.view.view La classe View è una struttura dati le cui proprietà memorizzano il layout e il contenuto di una specifica area rettangolare sullo schermo. L'oggetto View gestisce le dimensioni, il layout, il disegno, il focus, lo scorrimento, i tasti e i tocchi per lo schermo. La classe View serve come classe di base per diversi widget già implementati (Text, EditText, InputMethod, MovementMethod, Button, RadioButton, Checkbox e ScrollView). 230

231 android.view.viewgroup Come il nome stesso suggerisce, un ViewGroup è un oggetto il cui compito è quello di contenere un insieme di altri View e ViewGroup. In tal modo schermate complesse possono essere gestite come se fossero una unica entità. La classe ViewGroup serve come classe di base per diversi tipi comuni di layout già implementati. 231

232 GUI strutturata ad albero L'interfaccia grafica di una Activity è costituita da un albero di View e ViewGroup. Per collegare l'albero allo schermo, l'activity invoca la propria setcontentview() passando come argomento il nodo radice. 232

233 Disegno dell'albero Una volta che Android ha il riferimento all'oggetto del nodo radice può lavorare direttamente con esso per invalidare, misurare e disegnare l'albero. Quando l'activity diventa attiva e riceve il focus, il sistema lo notifica all'activity che richiede quindi al nodo radice di misurare e disegnare l'albero. Il nodo radice richiede quindi ad ognuno dei nodi figli di disegnare se stessi, e così via. 233

234 Disegno dei figli Ogni ViewGroup ha la responsabilità di misurare lo spazio disponibile, disporre i suoi figli e invocare il metodo Draw() su ognuno dei figli per fare in modo che si disegnino. Il figlio può quindi richiedere una dimensione e una posizione nel genitore, ma la decisione finale su dove e quanto grande possa essere il figlio spetta all'oggetto genitore. 234

235 ViewGroup.LayoutParams Ogni classe ViewGroup usa una classe innestata che estende LayoutParams. Questa sottoclasse contiene le proprietà che definiscono dimensione e posizione dei figli. 235

236 Dimensioni Tutti i ViewGroup includono larghezza e altezza; molti includono anche margini e bordi. A volte potrebbe essere necessario impostare larghezza e altezza a un valore fisso, mentre nella maggior parte dei casi si potrebbe voler richiedere a un ViewGroup di assumere le dimensioni degli oggetti in essi contenuti oppure la dimensione massima possibile. 236

237 Tipi di layout comuni Alcuni tipi di layout molto comuni sono: FrameLayout LinearLayout TableLayout RelativeLayout GridLayout 237

238 FrameLayout FrameLayout è l'oggetto di layout più semplice. E' uno spazio vuoto riservato sullo schermo che può poi essere riempito con un singolo oggetto. Tutti gli oggetti figli vengono allineati all'angolo in alto a sinistra. I figli aggiunti successivamente andranno quindi a coprire (totalmente o parzialmente) i figli aggiunti in precedenza. 238

239 LinearLayout Un LinearLayout allinea tutti i suoi figli in una direzione, in orizzontale o verticale, a seconda di quale proprietà viene settata. Si possono definire gravità e peso in modo che un oggetto (es. Comments) si espanda. 239

240 TableLayout Il TableLayout dispone i figli in righe e colonne. E' formato da oggetti di tipo TableRow, formati da celle che a loro volta contengono una sola View. 240

241 RelativeLayout Il RelativeLayout permette ai figli di specificare la loro posizione relativa a quella di un altro, identificato tramite un ID. 241

242 GridLayout Il GridLayout (disponibile a partire dalla 4.0) consente di definire una griglia fatta di righe, colonne e celle all'interno delle quali inserire i widget. La differenza con il TableLayout è che gli oggetti all'interno delle celle si adattano alle variazioni nell'interfaccia (es. Dimensione dei font) e utilizza meno memoria. 242

243 Fragment Sono stati introdotti a partire dalla 3.0 La classe base per i Fragments è android.app.fragment Facilitano il riuso di componenti in differenti layout: per es., si può definire un layout di tipo single-pane per smartphone e multi-pane tablet. from: developer.android.com 243

244 Fragment DetailFragment fragment = (DetailFragment) getfragmentmanager(). findfragmentbyid(r.id.detail_frag); if (fragment==null! fragment.isinlayout()) { // start new Activity } else { fragment.update(...); } Esistono fondamentalmente due approcci: Si utilizza una sola Activity che ad es. mostra due Fragment per i Tablet ed un fragment per gli Smartphone Facilitano il riuso di componenti in differenti layout: per es., si può definire un layout di tipo single-pane per smartphone e multi-pane tablet. 244

245 Creazione della UI Mediante l'adt è possibile creare l'intera UI della nostra applicazione, con i layout, i widget e le altre risorse, senza scrivere alcuna riga di codice Esistono anche altri tool di supporto tra i quali: DroidDraw per sviluppare la UI Android UI Utils composte da: UI Prototyping Stencils, per la prototipazione Android Asset Studio, per la generazione di Icone Android Icon Templates, raccolta di Icon Template in formato PhotoShop 245

246 Conclusioni In questa lezione abbiamo visto le caratteristiche di base della gestione dell'interfaccia utente da parte di Android. In particolare abbiamo visto l'organizzazione gerarchica degli oggetti e i 5 principali tipi di layout usati per disporre gli oggetti sullo schermo. 246

247 Sistemi Embedded - Android Lezione n. 13: Memorizzazione di dati

248 Introduzione In questa lezione vedremo quali sono i metodi principali messi a disposizione da una applicazione Android per memorizzare dei dati in maniera permanente e successivamente recuperarli.

249 Memorizzazione di dati Un tipico sistema operativo per PC fornisce un filesystem comune che ogni applicazione può usare per memorizzare e rileggere file che a seconda dei permessi possono essere anche letti da altre applicazioni. Android usa un approccio diverso: tutti i dati delle applicazioni, inclusi i file, sono privati di quella applicazione. Esistono dei meccanismi mediante i quali una applicazione può condividere i propri dati con le altre.

250 Meccanismi di memorizzazione Android fornisce 6 meccanismi per memorizzare e recuperare dati. Il loro utilizzo dipende da tre da 2 aspetti fondamentali: I dati devono essere privati oppure possono essere accessibili da altre applicazioni I dati richiedono molto oppure poco spazio

251 Meccanismi di memorizzazione Questi meccanismi sono: Shared Preferences (dati pubblici/privati) Internal Storage (dati privati) External Storage (dati pubblici) SQLite Database (dati strutturati privati) Rete (web service) Content Provider (dati privati accessibili)

252 Preferences 1/3 Una applicazione può scrivere e leggere valori (detti Preferences ) condivisi con altre applicazioni dello stesso package ( shared preferences ) oppure privati dell'activity. Per Preferences si intendono le informazioni di personalizzazione di una applicazione come per es. il colore di sfondo, i tipi di carattere, la suoneria predefinita... Tali Preferences possono essere definite tramite codice oppure mediante uno specifico file xml da salvare nella cartella res\xml

253 Preferences 2/3 Per scrivere e leggere le shared preferences si usa il metodo getsharedpreferences(). Per scrivere e leggere le preferences private si usa il metodo getpreferences().

254 Preferences 3/3 E' possibile definire le seguenti preferences: CheckBoxPreferences DialogPreferences EditTextPreferences ListPreferences RingtonePreferences

255 Preferences 4/4 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" android:key="first_preferencescreen"> <CheckBoxPreference android:key="wifi enabled" android:title="wifi" /> <PreferenceScreen android:key="second_preferencescreen" android:title="wifi settings"> <CheckBoxPreference android:key="prefer wifi" android:title="prefer WiFi" />... altre preferences... </PreferenceScreen> </PreferenceScreen>

256 Internal Storage 1/3 I file creati da un'applicazione sono salvati all'interno della directory data/data/<package>/ Soltanto l'app può scrivere all'interno di questa cartella. E' però possibile creare sottocartelle all'interno di essa nelle quali le altre applicazioni possono leggere e scrivere. Un'applicazione può scrivere e leggere file locali usando i metodi openfileoutput() e openfileinput() con nome locale e percorso.

257 Internal Storage 2/3 Se ci sono file statici inseriti nel progetto sotto res/raw/, bisogna accedervi usando il metodo openrawresource().

258 Internal Storage 3/3 I parametri utilizzabili sono: MODE_PRIVATE Nessun accesso dalle altre app MODE_WORLD_READABLE Sola lettura pe le altre app MODE_WORLD_WRITABLE Accesso in scrittura per le altre app MODE_WORLD_READABLE MODE_WORLD_WRITABLE Accesso in lettura / scrittura per le altre app

259 External Storage 1/4 Un dispositivo Android dispone di un External Storage, tipicamente una SD card, rimovibile o meno Tutti i file e le directory salvate all'interno dalla SD sono accessibili da parte di tutte le app Per poter accedere in lettura non è necessario specificare alcun permission, mentre in scrittura è necessario specificare il permesso: android.permission.write_external_storage Per ottenere la root della memoria esterna: File sdcarddir = Environment.getExternalStorageDirectory();

260 External Storage 2/4 Prima di procedere nelle operazioni di lettura/scrittura sulla SD card è necessario verificarne l'accessibilità mediante un apposito controllo: boolean mexternalstorageavailable = false; boolean mexternalstoragewriteable = false; String state = Environment.getExternalStorageState(); if (Environment.MEDIA_MOUNTED.equals(state)) { mexternalstorageavailable = mexternalstoragewriteable = true; } else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) { mexternalstorageavailable = true; mexternalstoragewriteable = false; } else { mexternalstorageavailable = mexternalstoragewriteable = false;

261 External Storage 3/4 Per accedere a file privati sulla SD card si utilizza: getexternalfilesdir() per API level 8 getexternalstoragedirectory() per API level < 8 Nel primo caso i file saranno creati all'interno della SD card nella directory: /Android/data/<package_name>/files/ I file così creati sono file privati dell'app Tipicamente non dovrebbero essere visibili alle altre app. Non esiste alcuna garanzia di sicurezza per questi file Se l'app viene rimossa questi file saranno cancellati.

262 External Storage 4/4 Sulla SD card possono essere disponibili delle aree condivise all'interno delle qualsi salvare file pubblici: DIRECTORY_MUSIC, DIRECTORY_PICTURES, DIRECTORY_RINGTONES... Per accedere a file condivisi sulla SD card si utilizza: getexternalstoragepublicdirectory() per API level 8 getexternalstoragedirectory() per API level < 8 Nel primo caso i file saranno creati all'interno della SD card nella directory predefinita per il tipo di file File path = Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_PICTURES); Nel secondo caso si dovrà esplicitare il path da usare.

263 SQLite Android supporta il sistema di database SQLite. SQLite è open source, supporta le funzionalità standard dei database relazionali e richiede pochissima memoria a runtime (circa 250 KBytes) Supporta i tipi di dato TEXT, INTEGER e REAL Per utilizzare SQLite in Android non è necessario alcun tipo di installazione o configurazione. Un database SQLite è privato: pertanto se una app vuole esporne il contenuto dovrà farlo mediante i Content Provider

264 SQLite Il package android.database contiene tutte le classi generali per operare con il database Il package android.database.sqlite contiene le classi specifiche di sqlite. Android include nell'sdk il tool sqlite3, che permette di visualizzare il contenuto delle tabelle, eseguire comandi SQL ed effettuare sui database SQL altri tipi di operazioni. Tutti i database sul dispositivo sono memorizzati nella directory /data/data/<nome_package>/databases

265 SQLiteOpenHelper La classe che dovrà gestire il nostro database è ereditata da SQLiteOpenHelper Normalmente si sovrascrivono i metodi oncreate() per creare il database e onupgrade() per aggiornare il database in caso di modifiche nel suo schema. Come primary key delle tabelle si utilizza _id. Una buona pratica è quella di definire classe per ciascuna Tabella del database con almeno i due metodi oncreate() e onupdate().

266 Cursor Il Cursor è l'oggetto restituito dall'esecuzione di una query e punta all'insieme dei risultati della query Per conoscere il numero degli elementi si utilizza il metodo count() Per navigare tra i risultati si usano i metodi movetofirst(), movetonext() e isafterlast() Per accedere ai dati del Cursor si utilizzano i metodi getlong(indicecolonna) e getstring(indicecolonna)

267 SQLiteDatabase 1/ SQLiteDatabase è la classe base mediante la quale opereremo con il nostro database Fornisce i metodi insert(), update() e delete() Il metodo execsql() ci permentte di eseguire direttamente del codice SQL (con dei limiti) db.execsql("create TABLE customer (_id INTEGER PRIMARY KEY NOT NULL, name TEXT NOT NULL, address TEXT);"); Il metodo rowquery() esegue una query SQL e restituisce un oggetto Cursor Cursor mcursor = db.rawquery( SELECT * FROM customer WHERE _id = 1;, null);

268 SQLiteDatabase 2/ Il metodo query() restituisce un oggetto Cursor sull'insieme dei risultati Cursor query (String table, String[] columns, String selection, String[] selectionargs, String groupby, String having, String orderby, String limit)

269 Content Provider Se si vogliono rendere pubblici dei dati bisogna creare un Content Provider. Questo oggetto permette di memorizzare dati accessibili da tutte le applicazioni. E' l'unico modo attraverso il quale package diversi possono condividere dati. Android di serie fornisce Content Provider per i tipi di dati più comuni (es. contatti o file multimediali).

270 Interrogare un Content Provider Il modo nel quale un Content Provider memorizza i dati è specifico dell'implementazione, ma tutti i Content Provider devono rispettare una convenzione comune per effettuare una query e restituire i risultati. Ogni Content Provider espone una stringa (URI, Uniform Resource Identifier) univoco. Un URI può indicare tutti gli oggetti di un certo tipo oppure uno specifico record.

271 Sintassi dell'uri A: prefisso standard (sempre uguale) B: percorso completo della classe C: percorso completo del tipo di dato D: se presente è l'id dello specifico record

272 Esempi di URI è l'uri che restituisce la lista di tutti i contatti sul dispositivo. content://contacts/people/ content://contacts/people/23 content://media/internal/images/ content://media/external/images/ è l'uri che restituisce il contatto con ID=23 restituisce la lista delle immagini memorizzate nel dispositivo restituisce la lista delle immagini contenute nella scheda di memoria (es. SD-Card)

273 Content Provider - Permission Il modello di sicurezza di Android richiede che un'applicazione non possa eseguire una data azione sensibile senza aver richiesto ed ottenuto la relativa Permission Tale richiesta deve essere dichiarata all'interno dell' AndroidManifest.xml e viene gestita a runtime, ma è durante l'installazione che l'utente concede o non concede la Permission richiesta. <uses-permission android:name="android.permission.read_contacts"> </uses-permission>

274 Content Provider - Esempio L'esempio seguente accede al Content Contatti elencando il contenuto ContentResolver cr = getcontentresolver(); Uri uri = Uri.parse("content://com.android.contacts/contacts"); ); Cursor cur = cr.query(uri, null, null, null, null); if (cur.getcount() > 0) { while (cur.movetonext()) { String id = cur.getstring( cur.getcolumnindex(contactscontract.contacts._id)); String name = cur.getstring( cur.getcolumnindex(contactscontract.contacts.display_name)); } } cur.close();

275 Rete Infine non bisogna dimenticare che ovviamente i dati oltre che sul dispositivo possono essere memorizzati sulla rete. I package utili a questo scopo sono: java.net.* e android.net.*

276 Conclusioni In questa lezione abbiamo visto gli strumenti messi a disposizione da Android per la memorizzazione permanente dei dati: le Preferences, i File, i Database, i Content Provider e ovviamente la rete.

277 Sistemi Embedded - Android Lezione 14: Location, Maps, Servizi di Sistema

278 Introduzione In questa lezione ci occuperemo di analizzare due casi d'uso che fanno uso dei servizi di localizzazione e della Google Maps

279 LocationManager Project Nel primo caso d'uso svilupperemo un progetto che ci permette di analizzare le potenzialità del LocationManager di Android

280 LocationManager 1/2 LocationManager è una classe che permette di accedere al system location service consentendo di ricevere notifiche sulla posizione del disposivo Permette ad una applicazione di ricevere aggiornamenti periodici della posizione del device Può invocare un Intent nel caso in cui il dispositivo si trova in una particolare posizione Per accedere a questo servizio si usa: public abstract getsystemservice(string name) In cui name assume il valore Context.LOCATION_SERVICE

281 LocationManager 2/2 Il LocationManager ottiene le informazioni della posizione mediante i LocationProvider disponibili all'interno del sistema: al momento esistono provider basati su GPS o sulla rete WIFI La scelta del provider dipende dai particolari criteri richiesti dalla nostra applicazione, per es. accuratezza, potenza, velocità, costo, altitudine. Per essere notificati sulla posizione è necessario definire una istanza dell'interfaccia LocationListener Location Manager e LocationListener sono definiti all'interno del package android.location

282 Location Listener Per ricevere una notifica da parte del provider prescelto è necessario definire il seguente metodo: public void requestlocationupdates(string provider, long mintime, float mindistance, LocationListener listener) LocationListener rappresenta una interfaccia che prevede la definizione di una serie di operazioni, tra cui: onlocationchanged() onproviderenabled() onstatuschanged() onproviderdisabled()

283 LocationManager Codice 1/2 LocationManager locationmanager = (LocationManager) getsystemservice(context.location_service); locationmanager.requestlocationupdates(locationmanager.gps _PROVIDER, 0,0,listenerFine); Mediante questo codice il LocationManager consente di registrare il LocationListener listenerfine rispetto al GPS_PROVIDER Avremmo potuto registrarlo anche sul NETWORK_PROVIDER Avremmo potuto anche invocare la più generica locationmanager.requestlocationupdates( locationmanager.getbestprovider(finecriteria, true), 0, 0, listenerfine);

284 LocationManager Codice 2/2 new LocationListener() public void onlocationchanged(location location) public void onproviderdisabled(string provider) public void onproviderenabled(string provider) public void onstatuschanged(string provider, int status,bundle extras) {} }

285 AndroidManifest.xml Per poter usufruire dei servizi di notifica è necesserio richiedere il permesso mediante il seguente codice: <uses-permission android:name= "android.permission.access_fine_location" /> In questo caso stiamo richiedendo di accedere alle informazioni di localizzazione in maniera precisa (FINE), utilizzando quindi il GPS In alternativa avremmo potuto richiedere il permesso ACCESS_COARSE_LOCATION per accedere alle informazioni di localizzazione (meno precise) fornite dalla rete WIFI

286 LocationManager e ADT Una caratteristica di questa applicazione è rappresentata dalla possibilità di interagire con il dispositivo virtuale mediante l' Emulator Control E' possibile inviare informazioni all'avd anche nel formato GPX (GPS Exchange Format) e KML (Keyhole Markup Language)

287 OnLocationChanged public void onlocationchanged(location location) { Log.i(LOG_TAG,location.getLatitude() +":"+location.getlongitude()); Toast.makeText(LocationManagerTest.this,location.getLatitude() +":"+location.getlongitude(), Toast.LENGTH_SHORT).show(); } In questo caso onlocationchanged registra i valori relativi alla nuova Location mediante un Log e la visualizzazione di un Toast

288 OnLocationChanged 2/3

289 onlocationchanged 3/3 Una seconda particolarità di questa applicazione è la costituita dal fatto che anche quando la nostra Activity non si trova nel ForeGround rimane comunque in ascolto della possibile variazione di posizione Ciò significa che l'activity riceve comunque le notifiche da parte del LocationManager pur essendo in background Se questo comportamento non è richiesto da parte della nostra applicazione è conveniente intervenire evitando in tal modo il consumo della batteria

290 removeupdates Per interrompere le notifiche dovremo quindi richiamare removeupdates in corrispondenza del metodo protected void onpause() { locationmanager.removeupdates(locationlistener); super.onpause(); } Per consentire alla nostra applicazione di ricevere nuovamente le notifiche non appena tornerà in ForeGround dovremo invocare locationmanager.requestlocationupdates all'interndo del metodo onresume()

291 Google Maps API Project Nel second caso d'uso svilupperemo un progetto basato sulle Google Maps API mediante il quale effettueremo alcuni test sulla geolocalizzazione in Android

292 Google Map API 1/3 Per sviluppare un progetto Android che interagisce con le Map di Google è necessario utilizzare le Google Maps API E' necessario creare un AVD ed un progetto che tengano conto del particolare target di riferimento (stiamo utilizzando librerie esterne ad Android standard Verifichiamo la disponibilità di queste librerie lanciando il tool Android SDK and AVD Manager ed eventualmente provvediamo alla loro installazione

293 Google Maps API 2/3

294 Google Maps API 3/3 Dopo aver installato le librerie necessarie i nuovi target saranno finalmente disponibili in fase di creazione di un nuovo progetto Android

295 map key 1/4 Per poter utilizzare le Google Maps API è necessario disporre di una map-key Tale codice sarà associato al certificato che utilizziamo per firmare la nostra applicazione E' necessario disporre di una chiave per il certificato di debug ed una per il certificato di release Di seguito vedremo come ottenere il codice per il certificato di debug

296 map key 2/4 Il primo passo consiste nell'individuare dove si trova il keystore Per far questo, in Eclipse, andiamo su Window Preferences Build

297 map key 3/4 Facendo riferimento al keystore eseguiamo il seguente comando: keytool -list -alias androiddebugkey -keystore <keystore> -storepass android -keypass android Il risultato di questo comando sarà la visualizzazione dell'md5 Tipo keystore: JKS Provider keystore: SUN Il keystore contiene 1 entry androiddebugkey, 11-mar-2011, PrivateKeyEntry, Impronta digitale certificato (MD5): 94:1E:43:49:87:73:BB:E6:A6:88:D7:20:F1:8E:B5:98

298 map key 4/4 Accedendo alla pagina: Dopo aver copiato la stringa MD5 nell'apposito spazio ed accettato la licenza d'uso possiamo finalmente generare l'api key

299 main.xml L'ultimo passo consiste nel creare e/o modificare il layout dell'applicazione inserendo una WebView come desritto di seguito: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <com.google.android.maps.mapview spèiega android:layout_width="fill_parent" android:layout_height="fill_parent" android:apikey="0zn3qjyynsgecujkildgqwp91xuczvawg0 vo4ia" /> </LinearLayout>

300 AndroidManifest.xml <uses-library android:name="com.google.android.maps" /> <uses-permission android:name= "android.permission.internet"></uses-permission> <uses-permission android:name= "android.permission.access_coarse_location" /> <uses-permission android:name= "android.permission.access_fine_location"/> Tra le definizioni più importanti presenti all'interno del file manifest ci sono i permessi e la libreria di google maps

301 Google Maps demo requestwindowfeature(window.feature_no_title); setcontentview(r.layout.main); mapview = (MapView) findviewbyid(r.id.mapview); mapview.setclickable(true); mapview.setbuiltinzoomcontrols(true); mapview.getcontroller().setzoom(21); mapview.setsatellite(true); LocationManager locationmanager = (LocationManager) getsystemservice(context.location_service); Il widget mapview è stato inserito in precedenza all'interno del layout main Non essendo stata definita alcuna posizione iniziale l'applicazione visualizzerà la mappa di default

302 Google Maps demo La MapActivity richiede l'implementazione della seguente protected boolean isroutedisplayed() { return false; } Tale funzione permette di dichiarare se la nostra applicazione utilizzerà informazioni di routing o no Come richiesto dalla licenza d'uso di Google Maps non può essere omessa e la sua eventuale assenza ci sarà comunicata in fase di compilazione

303 Google Maps demo new LocationListener() public void onlocationchanged(location location) { public void onproviderdisabled(string provider) { public void onproviderenabled(string provider) { public void onstatuschanged(string provider, int status,bundle extras) { } }); Come nel caso precedente definiamo i metodi del LocationListener che intendiamo gestire

304 Google Maps demo Esempio: quando il dispositivo si troverà in una nuova posizione Modificheremo il livello zoom Aggiorneremo la visualizzazione della public void onlocationchanged(location location) { GeoPoint mygeopoint = GeoPoint((int)(location.getLatitude()), (int)(location.getlongitude())); mapview.getcontroller().setzoom(10); mapview.getcontroller().animateto(mygeopoint); } Anche in questo caso possiamo utilizzare l'adt per interagire con l'emulatore

305 Google Maps demo - Codice Utilizziamo i seguenti valori ed inviamoli all'avd Sarà visualizzata la seguente mappa:

Android. Anatomia di una applicazione

Android. Anatomia di una applicazione Android Anatomia di una applicazione Elementi di base Gli elementi di base per costruire una applicazione Android sono cinque: Activity Intent Broadcast Receiver Service Content Provider 2 Activity (1/3)

Dettagli

La piattaforma Android

La piattaforma Android Sistemi Embededd a.a. 2013/2014 La piattaforma Android Raffaele Di Natale raffaele.dinatale@dieei.unict.it rdinatale@dieei.unict.it Bibliografia Web sites http://developer.android.com/ E-books http://it-ebooks.info/book/659/

Dettagli

Android. Installare l'sdk

Android. Installare l'sdk Android Installare l'sdk Introduzione Per sviluppare una applicazione per Android è necessario scaricare l'sdk dal sito ufficiale. SDK sta per Software Development Kit e contiene una serie di tool ed un

Dettagli

Android. Ciclo di vita di Activity, Service e Processi

Android. Ciclo di vita di Activity, Service e Processi Android Ciclo di vita di Activity, Service e Processi Introduzione In questa lezione analizzeremo il ciclo di vita delle Activity e dei Service mettendo in evidenza i criteri utilizzati da Android nella

Dettagli

ANDROID. Domenico Talia. Università della Calabria. talia@dimes.unical.it

ANDROID. Domenico Talia. Università della Calabria. talia@dimes.unical.it ANDROID Domenico Talia Università della Calabria talia@dimes.unical.it Sistemi Operativi per Mobile! I sistemi operativi per sistemi mobili seguono i principi dei SO classici ma devono gestire risorse

Dettagli

Android development. Sviluppo di Mobile Apps sul sistema operativo di Google

Android development. Sviluppo di Mobile Apps sul sistema operativo di Google Android development Sviluppo di Mobile Apps sul sistema operativo di Google Agenda Giorni: Gio 14/04/2011 Ven 15/04/2011 Gio 21/04/2011 Ven 22/04/2011 Suddivisione: Mattina: teoria Pomeriggio: pratica

Dettagli

Sistemi Mobili e Wireless Android Introduzione alla piattaforma

Sistemi Mobili e Wireless Android Introduzione alla piattaforma Sistemi Mobili e Wireless Android Introduzione alla piattaforma Stefano Burigat Dipartimento di Matematica e Informatica Università di Udine www.dimi.uniud.it/burigat stefano.burigat@uniud.it Cos'è Android?

Dettagli

Scaletta. Strumenti di sviluppo Prima applicazione Aspetti peculiari di Android. Conclusioni. Activity e Intent. MoBe s.r.l.

Scaletta. Strumenti di sviluppo Prima applicazione Aspetti peculiari di Android. Conclusioni. Activity e Intent. MoBe s.r.l. Scaletta Strumenti di sviluppo Prima applicazione Aspetti peculiari di Android Activity e Intent Conclusioni Strumenti di sviluppo Disponibili per Windows, Mac OS X (Intel) e Linux Strumenti JDK (Java

Dettagli

ANDROID 4.2 JELLY BEAN Installazione e configurazione dell ambiente

ANDROID 4.2 JELLY BEAN Installazione e configurazione dell ambiente INTRODUZIONE Per sviluppare applicazioni in grado di girare su sistemi Android servono tre cose: il Java JDK (Java Development Kit), che contiene tutti gli strumenti necessari a sviluppare nel linguaggio

Dettagli

Programmazione in ambiente

Programmazione in ambiente 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

Dettagli

Sistemi Mobili e Wireless Android Primi passi

Sistemi Mobili e Wireless Android Primi passi Sistemi Mobili e Wireless Android Primi passi Stefano Burigat Dipartimento di Matematica e Informatica Università di Udine www.dimi.uniud.it/burigat stefano.burigat@uniud.it Ambiente di sviluppo L'ambiente

Dettagli

Tecniche di progettazione e sviluppo di applicazioni mobile

Tecniche di progettazione e sviluppo di applicazioni mobile Slide del corso FSE Tecniche di progettazione e sviluppo di applicazioni mobile svolto presso AREA Science Park Padriciano - Trieste - Italy diegozabot@yahoo.it Android Introduzione diegozabot@yahoo.it

Dettagli

Programmazione Android

Programmazione Android Programmazione Android Giovanni Perbellini, Stefano Cordibella Università di Verona EDALab S.r.l. Agenda Introduzione Android Overview Ambiente di sviluppo Esempi Helloworld Weather 2 1 Cos è Android?

Dettagli

Android. Android. Sviluppo di applicazioni. Dalvik 19/03/2011. A. Ferrari

Android. Android. Sviluppo di applicazioni. Dalvik 19/03/2011. A. Ferrari Android Android A. Ferrari Android è un sistema opera8vo per disposi8vi mobili. Inizialmente sviluppato da Startup Android Inc. acquisita poi nel 2005 da Google Inc. Il cuore di Android è un kernel Linux.

Dettagli

Sviluppo su Android. Linux Day Torino 2010

Sviluppo su Android. Linux Day Torino 2010 Sviluppo su Android Linux Day Torino 2010 Francesco Ronchi francesco.ronchi@gmail.com - www.synesthesia.it Cos'è Android Sistema operativo dedicato ai device mobili: cellulari, palmari, tablet, navigatori...

Dettagli

Basi Android. Android si definisce open. Con8ene tecnologie open source. Il codice di Android è open. Licenza Open Source Apache 2.

Basi Android. Android si definisce open. Con8ene tecnologie open source. Il codice di Android è open. Licenza Open Source Apache 2. Basi Android 1 Android Cosa è Android? Android è un insieme di strumen8 e librerie per sviluppare applicazioni mobili è più di un SO Android si definisce open Con8ene tecnologie open source Linux Il codice

Dettagli

La piattaforma Android

La piattaforma Android Sistemi Embedded Reti e Servizi Mobili La piattaforma Android Raffaele Di Natale raffaele.dinatale@dieei.unict Bibliografia Free Getting Started: https://developer.android.com/training/index.html Books

Dettagli

Scuola Professionale e Filologica Geom. F.Borgogna Vercelli

Scuola Professionale e Filologica Geom. F.Borgogna Vercelli Scuola Professionale e Filologica Geom. F.Borgogna Vercelli Corsi ANDROID 2013/2014 Benvenuti nel mondo dinamico dello sviluppo di applicazioni per smartphone e tablet Android Corsi ANDROID 2013/2014 L

Dettagli

MagiCum S.r.l. Progetto Inno-School

MagiCum S.r.l. Progetto Inno-School MagiCum S.r.l. Progetto Inno-School Area Sviluppo Software Autore: Sergio Gandola Revisione: 2 Data: 07/06/13 Titolo: Documentazione Tecnica Diario File:Documentazione Tecnica.pdf Sito: http://inno-school.netsons.org/

Dettagli

Android Introduzione all architettura, alla programmazione e alla sicurezza. Alessandro Tanasi - http://www.tanasi.it - alessandro@tanasi.

Android Introduzione all architettura, alla programmazione e alla sicurezza. Alessandro Tanasi - http://www.tanasi.it - alessandro@tanasi. Android Introduzione all architettura, alla programmazione e alla sicurezza Alessandro Tanasi - http://www.tanasi.it - alessandro@tanasi.it Fun & profit Fun Sviluppo applicazioni Invenzione di nuove applicazioni

Dettagli

Indice: Introduzione 1 Strumenti di lavoro 2 Istallare Eclipse e SDK 3 Istallare l ADT in eclipse 4. Powered by: Vincenzo Acinapura

Indice: Introduzione 1 Strumenti di lavoro 2 Istallare Eclipse e SDK 3 Istallare l ADT in eclipse 4. Powered by: Vincenzo Acinapura Indice: Introduzione 1 Strumenti di lavoro 2 Istallare Eclipse e SDK 3 Istallare l ADT in eclipse 4 Introduzione Salve a tuttiù Mi presento mi chiamo Vincenzo Acinapura e studio ingegneria informatica,

Dettagli

Installazione del Software. per lo Sviluppo di Applicazioni Java

Installazione del Software. per lo Sviluppo di Applicazioni Java Installazione del Software per lo Sviluppo di Applicazioni Java Ing. Luca Ferrari ferrari.luca@unimore.it Tel. 0592056142 Installazione del Software per lo Sviluppo di Applicazioni Java 1 Il Compilatore

Dettagli

Lezione 1 Primi passi con Android

Lezione 1 Primi passi con Android A cura di Carlo Pelliccia Meno di tre anni fa Google ha rilasciato una versione preliminare del kit di sviluppo di Android, il suo nuovo sistema operativo dedicato agli smartphone. Futurologi e semplici

Dettagli

Caratteristiche principali. la struttura open source (escluse alcune versioni intermedie) il suo basarsi su kernel Linux.

Caratteristiche principali. la struttura open source (escluse alcune versioni intermedie) il suo basarsi su kernel Linux. Android s.o. Androidè un sistema operativo per dispositivi mobili costituito da uno stack software che include: un sistema operativo di base, i middleware per le comunicazioni le applicazioni di base.

Dettagli

Installazione e Configurazione della strumentazione necessaria. Antonio Gallo info@laboratoriolibero.com

Installazione e Configurazione della strumentazione necessaria. Antonio Gallo info@laboratoriolibero.com Installazione e Configurazione della strumentazione necessaria Antonio Gallo info@laboratoriolibero.com Installazione e Configurazione della strumentazione necessaria Programmi accessori per poter sviluppare

Dettagli

Lezione 1 Primi passi con Android

Lezione 1 Primi passi con Android A cura di Carlo Pelliccia Android è una piattaforma software per smartphone e tablet realizzata dal consorzio noto come Open Handset Alliance, di cui Google è capofila e maggiore contributore, ed al quale

Dettagli

Cosa consente di fare Gea.Net App

Cosa consente di fare Gea.Net App Cosa consente di fare Gea.Net App Gea.Net App per Android e una piccola app che gira su device con sistema operativo Android condividendo i dati del gestionale Gea.Net. Questa versione permette di disporre

Dettagli

per favore Android Mobile Programming Prof. R. De Prisco Prof. Roberto De Prisco 29/09/14 e NON RISPONDERE!!!! Slide 3

per favore Android Mobile Programming Prof. R. De Prisco Prof. Roberto De Prisco 29/09/14 e NON RISPONDERE!!!! Slide 3 Prof. Roberto De Prisco 2 per favore 3 o almeno e NON RISPONDERE!!!! Scrivere un app che mehe la vibrazione il lun e gio dalle 16:00 alle 18:00 1 Dress Code 4 Lui Vestito scuro, cravatta, camicia chiara,

Dettagli

INTRODUZIONE ALLE PIATTAFORME

INTRODUZIONE ALLE PIATTAFORME INTRODUZIONE ALLE PIATTAFORME Android ios Windows Phone 8 Android 2 Cos è Android? Un moderno open-source sistema operativo Componenti: Linux kernel Java Core applications 3 Perché è stato un successo

Dettagli

Laboratorio di Elaborazione e Trasmissione Video

Laboratorio di Elaborazione e Trasmissione Video + Laboratorio di Elaborazione e Trasmissione Video Prof. Christian Micheloni Dott. Marco Vernier Dipartimento di Matematica e Informatica Università degli studi di Udine Outline Lezione 1 - Il sistema

Dettagli

Programmazione Android. Luca Morettoni http://www.morettoni.net

Programmazione Android. Luca Morettoni <luca@morettoni.net> http://www.morettoni.net Programmazione Android Luca Morettoni http://www.morettoni.net Android Programming Cos'è Android; Concetti di base sulla programmazione: Q&A AndroidManifest; Activities; Services;

Dettagli

Guida all uso dell ambiente di sviluppo 1 integrato o IDE. JCreator LE 4.50

Guida all uso dell ambiente di sviluppo 1 integrato o IDE. JCreator LE 4.50 Guida all uso dell ambiente di sviluppo 1 integrato o IDE JCreator LE 4.50 Inizializzazione: creazione del nuovo progetto e del file sorgente in ambiente JCreator Al lancio del programma si apre la finestra

Dettagli

Android world. Sviluppare app per Android. Un insieme di software per dispositivi mobili (smartphone, tablet, portatili...)

Android world. Sviluppare app per Android. Un insieme di software per dispositivi mobili (smartphone, tablet, portatili...) Android world Un insieme di software per dispositivi mobili (smartphone, tablet, portatili...) Contiene un Sistema Operativo, software middleware e applicazioni varie Sviluppato da Open Handset Alliance,

Dettagli

L ambiente di sviluppo Android Studio

L ambiente di sviluppo Android Studio L ambiente di sviluppo Android Studio Android Studio è un ambiente di sviluppo integrato (IDE, Integrated Development Environment) per la programmazione di app con Android. È un alternativa all utilizzo

Dettagli

Android. Elenco dei package

Android. Elenco dei package Android Elenco dei package Introduzione In questa lezione vedremo l'elenco completo dei package Android che raggruppano le classi che è possibile utilizzare per sviluppare una applicazione utilizzando

Dettagli

Corso App modulo Android. Antonio Gallo info@laboratoriolibero.com

Corso App modulo Android. Antonio Gallo info@laboratoriolibero.com Corso App modulo Android Antonio Gallo info@laboratoriolibero.com Strumentazione: PC + smartphone Android + cavo micro USB per connessione Framework Phonegap SDK di Android JDK (Java) Eclipse (opzionale)

Dettagli

Introduzione ad Android

Introduzione ad Android Capitolo 1 Introduzione ad Android La fine del precedente millennio è stata sicuramente caratterizzata da Internet: una vera e propria rivoluzione non solo tecnologica ma soprattutto culturale. La possibilità

Dettagli

Programmazione. Android

Programmazione. Android Lezioni 4 e 5 Programmazione Android Componenti di un'applicazione AndroidManifest.xml Le Activity Definizione Ciclo di vita Layout & View Interazione Laboratorio 9 e 12 Ottobre 2012 2 Componenti di un'applicazione

Dettagli

Android AppInventor. Argomenti trattati. Introduzione. AppInventor. etc. Google Android Android SDK, Android Market

Android AppInventor. Argomenti trattati. Introduzione. AppInventor. etc. Google Android Android SDK, Android Market Android v. 1.0.1 Argomenti trattati Android AppInventor Introduzione Google Android Android SDK, Android Market AppInventor Architettura Sviluppo di applicazioni etc Storia Introduzione Android Android

Dettagli

Fondamenti di Informatica T-1 CdS Ingegneria Informatica a.a. 2011/2012. Introduzione a Visual Studio 2005/2008/2010

Fondamenti di Informatica T-1 CdS Ingegneria Informatica a.a. 2011/2012. Introduzione a Visual Studio 2005/2008/2010 Fondamenti di Informatica T-1 CdS Ingegneria Informatica a.a. 2011/2012 Introduzione a Visual Studio 2005/2008/2010 1 Outline Solution e Project Visual Studio e linguaggio C Visual Studio schermata principale

Dettagli

Linguaggi 2 e laboratorio

Linguaggi 2 e laboratorio Linguaggi 2 e laboratorio Docente: Leonardo Badia Contatti: leonardo.badia@gmail.com Pagina web del corso: www.unife.it/scienze/informatica/ insegnamenti/linguaggi-2-laboratorio Argomenti del corso: Java

Dettagli

Guida di installazione per PC Suite

Guida di installazione per PC Suite Guida di installazione per PC Suite Il manuale d uso elettronico viene rilasciato subordinatamente a: Termini e condizioni dei manuali Nokia del 7 giugno 1998 ( Nokia User s Guides Terms and Conditions,

Dettagli

14/10/2015 ALESSANDRAZULLO SVILUPPO DI APPLICAZIONI ANDROID- VERSIONE 1. http://alessandrazullo.altervista.org Alessandra Zullo

14/10/2015 ALESSANDRAZULLO SVILUPPO DI APPLICAZIONI ANDROID- VERSIONE 1. http://alessandrazullo.altervista.org Alessandra Zullo 14/10/2015 ALESSANDRAZULLO SVILUPPO DI APPLICAZIONI ANDROID- VERSIONE 1 http://alessandrazullo.altervista.org Alessandra Zullo Indice Provvisorio INTRODUZIONE... 3 COMPONENTI PRINCIPALI... 3 PROCESSI...

Dettagli

Sistemi Mobili e Wireless Android Activity

Sistemi Mobili e Wireless Android Activity Sistemi Mobili e Wireless Android Activity Stefano Burigat Dipartimento di Matematica e Informatica Università di Udine www.dimi.uniud.it/burigat stefano.burigat@uniud.it Activity Tipicamente, un'activity

Dettagli

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011 Fondamenti di Informatica 1 Prof. B.Buttarazzi A.A. 2010/2011 Sommario Installazione SOFTWARE JDK ECLIPSE 03/03/2011 2 ALGORITMI E PROGRAMMI PROBLEMA ALGORITMO PROGRAMMA metodo risolutivo linguaggio di

Dettagli

Introduzione ad Android

Introduzione ad Android Capitolo 1 Introduzione ad Android La fine del precedente millennio è stata sicuramente caratterizzata da Internet: una vera e propria rivoluzione non solo tecnologica, ma soprattutto culturale. Il fatto

Dettagli

Introduzione a Visual Studio 2005

Introduzione a Visual Studio 2005 Fondamenti di Informatica e Laboratorio T-AB Ingengeria Elettronica e Telecomunicazioni a.a. 2008/2009 Introduzione a Visual Studio 2005 Outline Solutions e Projects Visual Studio e il linguaggio C Visual

Dettagli

Boot Camp Guida di installazione e configurazione

Boot Camp Guida di installazione e configurazione Boot Camp Guida di installazione e configurazione Indice 3 Introduzione 4 Panoramica dell'installazione 4 Passo 1: Verificare la presenza di aggiornamenti 4 Passo 2: Per preparare il Mac per Windows 4

Dettagli

Strumenti per lo sviluppo del software

Strumenti per lo sviluppo del software Lo sviluppo del software Strumenti per lo sviluppo del software Lo sviluppo del software è l attività centrale del progetto e ha lo scopo di produrre il codice sorgente che, una volta compilato e messo

Dettagli

Struttura di un sistema operativo. Struttura dei Sistemi Operativi. Servizi per l utente generico. Servizi per l utente generico

Struttura di un sistema operativo. Struttura dei Sistemi Operativi. Servizi per l utente generico. Servizi per l utente generico Impossibile visualizzare l'immagine. Struttura di un sistema operativo Struttura dei Sistemi Operativi Servizi di un sistema operativo Interfaccia Utente Capitolo 2 -- Silberschatz Chiamate di sistema

Dettagli

Laboratorio di Smart Vision and Sensor Networks. Niki Martinel Marco Vernier Dipartimento di Matematica e Informatica Università degli studi di Udine

Laboratorio di Smart Vision and Sensor Networks. Niki Martinel Marco Vernier Dipartimento di Matematica e Informatica Università degli studi di Udine + Laboratorio di Smart Vision and Sensor Networks Niki Martinel Marco Vernier Dipartimento di Matematica e Informatica Università degli studi di Udine Outline Lezione 1 - Il sistema operativo Android Cos

Dettagli

Scrivere un programma in Java

Scrivere un programma in Java Programmare in JAVA Leonardo Rigutini Dipartimento Ingegneria dell Informazione Università di Siena Via Roma 56 53100 SIENA uff. 0577 234850 - interno: 7102 Stanza 119 rigutini@dii.unisi.it http://www.dii.unisi.it/~rigutini/

Dettagli

1 PRIMI PASSI CON ANDROID

1 PRIMI PASSI CON ANDROID 1 PRIMI PASSI CON ANDROID Il primo passo nella realizzazione di un applicazione Android è l installazione dei tool e dell SDK. Se avete già prodotto una prima applicazione Android, farvi le congratulazioni

Dettagli

Installazione e caratteristiche generali 1

Installazione e caratteristiche generali 1 Installazione e caratteristiche generali 1 Introduzione SIGLA Ultimate e SIGLA Start Edition possono essere utilizzati solo se sono soddisfatti i seguenti prerequisiti: Microsoft.Net Framework 3.5 (consigliato

Dettagli

Sistemi Operativi per Sistemi di Elaborazione Ubiqui

Sistemi Operativi per Sistemi di Elaborazione Ubiqui Griglie e Sistemi di Elaborazione Ubiqui Sistemi Operativi per Sistemi di Elaborazione Ubiqui Griglie e Sistemi Ubiqui - D. Talia - UNICAL 1 Sistemi Operativi per Ubiquitous Computing Palm OS Symbian OS

Dettagli

Corso Eclipse. Prerequisiti. 1 Introduzione

Corso Eclipse. Prerequisiti. 1 Introduzione Corso Eclipse 1 Introduzione 1 Prerequisiti Uso elementare del pc Esecuzione ricerche su Internet Esecuzione download Conoscenza elementare della programmazione 2 1 Cos è Eclipse Eclipse è un IDE (Integrated

Dettagli

Un Sistema Location-based per la mappatura degli Access Point

Un Sistema Location-based per la mappatura degli Access Point 1 Un Sistema Location-based per la mappatura degli Access Point Pasquale Cautela pasquale.cautela@studio.unibo.it Marco Peca marco.peca@studio.unibo.it Rosario Salpietro rosario.salpietro@studio.unibo.it

Dettagli

Ambienti di Sviluppo

Ambienti di Sviluppo Ambienti di Sviluppo Insieme omogeneo di strumenti adatti allo sviluppo di progetti software. Editor; Compilatori e/o interpreti; Strumenti di test; Applicazioni che permettono di editare / disegnare il

Dettagli

Il cellulare 2.0 diventa più personale

Il cellulare 2.0 diventa più personale Il cellulare 2.0 diventa più personale Ing. Antonio Tringali 29/03/2008 Cosa è Android? Il 5/11/2007 Google annuncia Android E' un application environment per cellulari evoluti

Dettagli

Lezione 19 Blackberry. Dr. Paolo Casoto, Ph.D - 2012

Lezione 19 Blackberry. Dr. Paolo Casoto, Ph.D - 2012 + Lezione 19 Blackberry + Credits I lucidi di questa lezione sono stati redatti dal Dr. Paolo Casoto nel 2012. Sono rilasciati con licenza Creative Commons Attribuzione, non commerciale e non opere derivate.

Dettagli

Tale attività non è descritta in questa dispensa

Tale attività non è descritta in questa dispensa Fondamenti di informatica Oggetti e Java ottobre 2014 1 Nota preliminare L installazione e l uso di Eclipse richiede di aver preliminarmente installato Java SE SDK Tale attività non è descritta in questa

Dettagli

Capitolo 2 -- Silberschatz

Capitolo 2 -- Silberschatz Struttura dei Sistemi Operativi Capitolo 2 -- Silberschatz Struttura di un sistema operativo Servizi di un sistema operativo Interfaccia Utente Chiamate di sistema Tipi di chiamate Programma di sistema

Dettagli

Guida di installazione per PC Suite. IT 9356487 Issue 1

Guida di installazione per PC Suite. IT 9356487 Issue 1 Guida di installazione per PC Suite IT 9356487 Issue 1 Copyright 2003 Nokia. Tutti i diritti sono riservati. Il contenuto del presente documento, né parte di esso, potrà essere riprodotto, trasferito,

Dettagli

Lezione 3 Le attività

Lezione 3 Le attività A cura di Carlo Pelliccia Le applicazioni Android, come si è accennato durante la prima lezione, si compongono di quattro mattoni fondamentali: le attività (activity), i servizi (service), i broadcast

Dettagli

Lab 01 Sistemi Operativi

Lab 01 Sistemi Operativi Informatica Grafica Ingegneria Edile-Architettura a.a. 2010/2011 Lab 01 Sistemi Operativi Lab01 1 Obiettivi Durante l'esercitazione vedremo come il sistema operativo si occupa di gestire: 1. i processi

Dettagli

Filippo Druda LO SVILUPPO IN ANDROID

Filippo Druda LO SVILUPPO IN ANDROID 1 Classe 5 A Candidato Filippo Druda LO SVILUPPO IN ANDROID 2 L'EVOLUZIONE TECNOLOGICA NON HA MAI DANNEGGIATO NESSUNO.. ABSTRACT Istituto Tecnico Industriale Don Orione Fano 3 Il progresso tecnologico

Dettagli

b phoops Manuale Installazione Software GIS per gestione toponomastica, grafo strade, numeri civici information management & design

b phoops Manuale Installazione Software GIS per gestione toponomastica, grafo strade, numeri civici information management & design information management & design p h o o p s s. r. l. v ia de l la T o r r e t t a 1 4-5 0 1 3 7 F ire n z e T e l + 3 9. 0 5 5. 3 9 8 5 6 7 0 F a x + 3 9. 0 5 5. 5 6 0 9 7 3 0 e - m a il : info @ p h o

Dettagli

Sistemi Operativi. Funzioni e strategie di progettazione: dai kernel monolitici alle macchine virtuali

Sistemi Operativi. Funzioni e strategie di progettazione: dai kernel monolitici alle macchine virtuali Modulo di Sistemi Operativi per il corso di Master RISS: Ricerca e Innovazione nelle Scienze della Salute Unisa, 17-26 Luglio 2012 Sistemi Operativi Funzioni e strategie di progettazione: dai kernel monolitici

Dettagli

Laboratorio di Elaborazione e Trasmissione Video

Laboratorio di Elaborazione e Trasmissione Video + Laboratorio di Elaborazione e Trasmissione Video Prof. Christian Micheloni Dott. Marco Vernier Dipartimento di Matematica e Informatica Università degli studi di Udine Cosa abbiamo visto Nella 1 lezione:

Dettagli

UNIVERSITA DEGLI STUDI DI L AQUILAL FACOLTA DI INGEGNERIA Applicazioni per dispositivi mobili: gli strumenti di sviluppo di Flash Lite. Diego Vasarelli Indice degli argomenti trattati. Introduzione agli

Dettagli

Guida installazione Winasped 4 Data ultima revisione della guida: 12-05-2014

Guida installazione Winasped 4 Data ultima revisione della guida: 12-05-2014 Guida installazione Winasped 4 Data ultima revisione della guida: 12-05-2014 Winasped è un'applicazione di tipo client - server pertando è composta da due parti: un programma client e uno server. Di seguito

Dettagli

Sistemi Operativi STRUTTURA DEI SISTEMI OPERATIVI 3.1. Sistemi Operativi. D. Talia - UNICAL

Sistemi Operativi STRUTTURA DEI SISTEMI OPERATIVI 3.1. Sistemi Operativi. D. Talia - UNICAL STRUTTURA DEI SISTEMI OPERATIVI 3.1 Struttura dei Componenti Servizi di un sistema operativo System Call Programmi di sistema Struttura del sistema operativo Macchine virtuali Progettazione e Realizzazione

Dettagli

Backup Exec 2012. Guida rapida all'installazione

Backup Exec 2012. Guida rapida all'installazione Backup Exec 2012 Guida rapida all'installazione Installazione Il documento contiene i seguenti argomenti: Requisiti di sistema Elenco di controllo pre-installazione di Backup Exec Esecuzione di un'installazione

Dettagli

Capitolo 1 Introduzione a Gambas

Capitolo 1 Introduzione a Gambas Capitolo 1 Introduzione a Gambas Gambas è stato creato inizialmente da Benoit Minisini, un residente della periferia di Parigi. Secondo Benoit, Gambas è un linguaggio Basic con estensioni per la programmazione

Dettagli

Boot Camp Guida all installazione e alla configurazione

Boot Camp Guida all installazione e alla configurazione Boot Camp Guida all installazione e alla configurazione Indice 4 Introduzione 5 Cosa ti occorre 6 Panoramica dell installazione 6 Passo 1: verifica la presenza di aggiornamenti. 6 Passo 2: apri Assistente

Dettagli

SMS-GPS MANAGER. Software per la gestione remota ed automatizzata dei telecontrolli gsm con e senza gps

SMS-GPS MANAGER. Software per la gestione remota ed automatizzata dei telecontrolli gsm con e senza gps SOFTWARE PER LA GESTIONE DEI TELECONTROLLI SMS-GPS MANAGER Software per la gestione remota ed automatizzata dei telecontrolli gsm con e senza gps Rev.1009 Pag.1 di 10 www.carrideo.it INDICE 1. DESCRIZIONE

Dettagli

CORSO WEB SERVER, DBMS E SERVER FTP

CORSO WEB SERVER, DBMS E SERVER FTP CORSO WEB SERVER, DBMS E SERVER FTP DISPENSA LEZIONE 1 Autore D. Mondello Transazione di dati in una richiesta di sito web Quando viene effettuata la richiesta di un sito Internet su un browser, tramite

Dettagli

Manuale istruzioni. Software Vimar By-web per dispositivi mobili Android Manuale per l'uso

Manuale istruzioni. Software Vimar By-web per dispositivi mobili Android Manuale per l'uso Manuale istruzioni Software Vimar By-web per dispositivi mobili Android Manuale per l'uso Contratto di licenza Vimar con l'utente finale VIMAR SPA con sede in Marostica (VI), Viale Vicenza n. 14 (http://www.vimar.com),

Dettagli

e l ambiente Info L 4 Le operazioni sui dati L 1 L ambiente di programmazione L 5 Le stringhe L 2 La struttura del codice

e l ambiente Info L 4 Le operazioni sui dati L 1 L ambiente di programmazione L 5 Le stringhe L 2 La struttura del codice 1La sintassi Java e l ambiente di sviluppo UNITÀ DI APPRENDIMENTO L 1 L ambiente di programmazione L 2 La struttura del codice L 3 Le variabili e i tipi primitivi L 4 Le operazioni sui dati L 5 Le stringhe

Dettagli

Aggiornamento Software e Firmware nuova release Datalogger

Aggiornamento Software e Firmware nuova release Datalogger Aggiornamento Software e Firmware nuova release Datalogger SISGEO ha recentemente rilasciato una nuova versione del software Smart Manager Suite che viene fornito con la nuova release dei Datalogger portatili

Dettagli

La prima applicazione Java con NetBeans IDE. Dott. Ing. M. Banci, PhD

La prima applicazione Java con NetBeans IDE. Dott. Ing. M. Banci, PhD La prima applicazione Java con NetBeans IDE Dott. Ing. M. Banci, PhD Creare la prima applicazione 1. Creare un progetto: Quando si crea un progetto IDE occorre creare un ambiente nel quale costruire e

Dettagli

Capitolo 3: Strutture dei sistemi operativi

Capitolo 3: Strutture dei sistemi operativi Capitolo 3: Strutture dei sistemi operativi Componenti del sistema Servizi di un sistema operativo Chiamate del sistema Programmi di sistema Struttura del sistema Macchine virtuali Progettazione e realizzazione

Dettagli

Linguaggio Java. Robusto. Orientato agli oggetti. Protegge e gestisce dagli errori. Non permette costrutti pericolosi

Linguaggio Java. Robusto. Orientato agli oggetti. Protegge e gestisce dagli errori. Non permette costrutti pericolosi Linguaggio Java Robusto Non permette costrutti pericolosi Eredità Multipla Gestione della Memoria Orientato agli oggetti Ogni cosa ha un tipo Ogni tipo è un oggetto (quasi) Protegge e gestisce dagli errori

Dettagli

INTRODUZIONE ALLA PROGRAMMAZIONE ANDROID

INTRODUZIONE ALLA PROGRAMMAZIONE ANDROID INTRODUZIONE ALLA PROGRAMMAZIONE ANDROID Giuseppe Marziale Bari, 27 Novembre 2013 About Me (Giuseppe Marziale) Sono Laureato in Ingegneria informatica specializzazione in sistema informativi e reti ( Ottobre

Dettagli

J2ME Platform. Symbian OS. Nokia property platform: Series 60. Microsoft Windows CE.NET Microsoft Windows Mobile Mobile client-server communication

J2ME Platform. Symbian OS. Nokia property platform: Series 60. Microsoft Windows CE.NET Microsoft Windows Mobile Mobile client-server communication Dott. Giovanni Perbellini giovanni.perbellini@univr.it J2ME Platform J2ME Wireless Toolkit (WTK 2.2) Symbian OS Symbian SDK Nokia property platform: Series 60 Nokia Developer s Suite SDK Microsoft Windows

Dettagli

Symantec Backup Exec 12.5 for Windows Servers. Guida rapida all'installazione

Symantec Backup Exec 12.5 for Windows Servers. Guida rapida all'installazione Symantec Backup Exec 12.5 for Windows Servers Guida rapida all'installazione 13897290 Installazione di Backup Exec Il documento contiene i seguenti argomenti: Requisiti di sistema Prima dell'installazione

Dettagli

Android. Android03: Ciclo di vita di una Activity. diegozabot@yahoo.it

Android. Android03: Ciclo di vita di una Activity. diegozabot@yahoo.it Android Android03: Ciclo di vita di una Activity diegozabot@yahoo.it Ciclo di vita Ciclo di vita La classe Activity gestisce i propri stati definendo una serie di eventi che ne governano il ciclo. Spetta

Dettagli

Manuale dell'applicazione SMS

Manuale dell'applicazione SMS Manuale dell'applicazione SMS Copyright 1998-2002 Palm, Inc. Tutti i diritti riservati. Graffiti, HotSync e Palm OS sono marchi registrati di Palm, Inc.. Il logo HotSync, Palm e il logo Palm sono marchi

Dettagli

Installazione Qt/Qt Quick per target Android

Installazione Qt/Qt Quick per target Android Tutorial Qt-Italia.org Installazione Qt/Qt Quick per target Android Prima edizione, Giugno 2015 P. S e r e n o ( h t t p : / / w w w. q t - i t a l i a. o r g ) P a g. 1 19 Questo tutorial è rilasciato

Dettagli

2 - Introduzione al linguaggio Java

2 - Introduzione al linguaggio Java 2 - Introduzione al linguaggio Java Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo

Dettagli

NetSpot Console Manuale dell'utente

NetSpot Console Manuale dell'utente NetSpot Console Manuale dell'utente NetSpot Console Prefazione Questo manuale contiene le descrizioni di tutte le funzioni e delle istruzioni operative per NetSpot Console. Si consiglia di leggerlo con

Dettagli

Università degli Studi di Modena e Reggio Emilia. Paolo Piccinini WASCANA ECLIPSE MANUALE UTENTE

Università degli Studi di Modena e Reggio Emilia. Paolo Piccinini WASCANA ECLIPSE MANUALE UTENTE Università degli Studi di Modena e Reggio Emilia Paolo Piccinini WASCANA ECLIPSE MANUALE UTENTE Corso di Fondamenti di Informatica 2010-2011 Sommario Introduzione... 3 Installazione di Wascana Eclipse

Dettagli

Inizia da Qui BlackBerry Curve 9300 Series

Inizia da Qui BlackBerry Curve 9300 Series Benvenuti in BlackBerry! Impara a conoscere il nuovo smartphone BlackBerry Curve. Esplorazione tasti 2010 Research In Motion Limited. Tutti i diritti riservati. BlackBerry, RIM, Research In Motion, SureType,

Dettagli

LA TUA PRIMA APP CON CORDOVA

LA TUA PRIMA APP CON CORDOVA LA TUA PRIMA APP CON CORDOVA Dedicato a. Gianluca ed Enza, due persone speciali Autore: Gianpiero Fasulo www.gfasulo.it - Pag. 2 COPYRIGHT La tua prima APP con CORDOVA Tutti i diritti riservati. Nessuna

Dettagli

Qlik Sense Desktop. Qlik Sense 2.0.2 Copyright 1993-2015 QlikTech International AB. Tutti i diritti riservati.

Qlik Sense Desktop. Qlik Sense 2.0.2 Copyright 1993-2015 QlikTech International AB. Tutti i diritti riservati. Qlik Sense Desktop Qlik Sense 2.0.2 Copyright 1993-2015 QlikTech International AB. Tutti i diritti riservati. Copyright 1993-2015 QlikTech International AB. Tutti i diritti riservati. Qlik, QlikTech, Qlik

Dettagli

Manuale dell'applicazione SMS

Manuale dell'applicazione SMS Manuale dell'applicazione SMS Copyright 1998-2002 Palm, Inc. Tutti i diritti riservati. Graffiti, HotSync, il logo Palm e Palm OS sono marchi registrati di Palm, Inc. Il logo HotSync e Palm sono marchi

Dettagli

Istruzioni di installazione di Intel Utilities

Istruzioni di installazione di Intel Utilities Istruzioni di installazione di Intel Utilities Queste istruzioni spiegano come installare Intel Utilities dal CD n. 1 di Intel System Management Software (per i due CD della versione solo in inglese) o

Dettagli

Strutture dei Sistemi Operativi

Strutture dei Sistemi Operativi Strutture dei Sistemi Operativi Componenti di sistema Servizi del sistema operativo Chiamate di sistema Programmi di sistema Struttura del sistema Macchine virtuali Progetto e implementazione di sistemi

Dettagli

FileMaker 8. Installazione dei driver client FileMaker 8 ODBC e JDBC

FileMaker 8. Installazione dei driver client FileMaker 8 ODBC e JDBC FileMaker 8 Installazione dei driver client FileMaker 8 ODBC e JDBC 2004-2005 Filemaker, Inc. Tutti i diritti riservati. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker

Dettagli