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:

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

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

Ciclo di vita delle aevità Android Mobile Programming Prof. R. De Prisco

Ciclo di vita delle aevità Android Mobile Programming Prof. R. De Prisco Ciclo di vita delle aevità Ogni AcHvity ha dei metodi standard A(vità non esiste 1. oncreate() 2. onstart() 3. onresume() A(vità in esecuzione 4. onpause() 5. onstop() 6. ondestroy() A(vità non esiste

Dettagli

FileMaker Server 12. Guida introduttiva

FileMaker Server 12. Guida introduttiva FileMaker Server 12 Guida introduttiva 2007 2012 FileMaker, Inc. Tutti i diritti riservati. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker e Bento sono marchi di FileMaker,

Dettagli

Setup e installazione

Setup e installazione Setup e installazione 2 Prima di muovere i primi passi con Blender e avventurarci nel vasto mondo della computer grafica, dobbiamo assicurarci di disporre di due cose: un computer e Blender. 6 Capitolo

Dettagli

Guida rapida Vodafone Internet Key K4607-Z. Progettata da Vodafone

Guida rapida Vodafone Internet Key K4607-Z. Progettata da Vodafone Guida rapida Vodafone Internet Key K4607-Z Progettata da Vodafone Benvenuti nel mondo della comunicazione in mobilità 1 Benvenuti 2 Impostazione della Vodafone Internet Key 4 Windows 7, Windows Vista,

Dettagli

FASE DEBUGGING: Compiler Linker. controllando che la voce Genera le informazioni per il debug cioè. "Generate debugging information"

FASE DEBUGGING: Compiler Linker. controllando che la voce Genera le informazioni per il debug cioè. Generate debugging information FASE DEBUGGING: Prima della compilazione, si devono inserire 1 nel progetto informazioni per il debug cioè si devono visualizzare le opzioni di progetto seguendo il percorso: controllando che la voce Genera

Dettagli

Virtualizzazione e installazione Linux

Virtualizzazione e installazione Linux Virtualizzazione e installazione Linux Federico De Meo, Davide Quaglia, Simone Bronuzzi Lo scopo di questa esercitazione è quello di introdurre il concetto di virtualizzazione, di creare un ambiente virtuale

Dettagli

Installare e configurare Easy Peasy (Ubuntu Eee) su Asus Eee PC mini howto

Installare e configurare Easy Peasy (Ubuntu Eee) su Asus Eee PC mini howto Installare e configurare Easy Peasy (Ubuntu Eee) su Asus Eee PC mini howto Augusto Scatolini (webmaster@comunecampagnano.it) Ver. 1.0 (marzo 2009) ultimo aggiornamento aprile 2009 Easy Peasy è una distribuzione

Dettagli

FileMaker Server 13. Guida introduttiva

FileMaker Server 13. Guida introduttiva FileMaker Server 13 Guida introduttiva 2007-2013 FileMaker, Inc. Tutti i diritti riservati. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 Stati Uniti FileMaker e Bento sono marchi

Dettagli

DEFT Zero Guida Rapida

DEFT Zero Guida Rapida DEFT Zero Guida Rapida Indice Indice... 1 Premessa... 1 Modalità di avvio... 1 1) GUI mode, RAM preload... 2 2) GUI mode... 2 3) Text mode... 2 Modalità di mount dei dispositivi... 3 Mount di dispositivi

Dettagli

Cos'é Code::Blocks? Come Creare un progetto Come eseguire un programma Risoluzione problemi istallazione Code::Blocks Che cos è il Debug e come si usa

Cos'é Code::Blocks? Come Creare un progetto Come eseguire un programma Risoluzione problemi istallazione Code::Blocks Che cos è il Debug e come si usa di Ilaria Lorenzo e Alessandra Palma Cos'é Code::Blocks? Come Creare un progetto Come eseguire un programma Risoluzione problemi istallazione Code::Blocks Che cos è il Debug e come si usa Code::Blocks

Dettagli

AMBIENTE DEV PASCAL. Dev-Pascal 1.9.2. Finestra di apertura

AMBIENTE DEV PASCAL. Dev-Pascal 1.9.2. Finestra di apertura Dev-Pascal 1.9.2 1 Dev-Pascal è un ambiente di sviluppo integrato per la programmazione in linguaggio Pascal sotto Windows prodotto dalla Bloodshed con licenza GNU e liberamente scaricabile al link http://www.bloodshed.net/dev/devpas192.exe

Dettagli

CHIAVETTA INTERNET ONDA MT503HSA

CHIAVETTA INTERNET ONDA MT503HSA CHIAVETTA INTERNET ONDA MT503HSA Manuale Utente Linux Debian, Fedora, Ubuntu www.ondacommunication.com Chiavet ta Internet MT503HSA Guida rapida sistema operativo LINUX V 1.1 33080, Roveredo in Piano (PN)

Dettagli

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO...

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO... Modulo A Programmiamo in Pascal Unità didattiche 1. Installiamo il Dev-Pascal 2. Il programma e le variabili 3. Input dei dati 4. Utilizziamo gli operatori matematici e commentiamo il codice COSA IMPAREREMO...

Dettagli

Dev C++ Prerequisiti. Note di utilizzo. Utilizzo di Windows Effettuare il download da Internet Compilazione di un programma

Dev C++ Prerequisiti. Note di utilizzo. Utilizzo di Windows Effettuare il download da Internet Compilazione di un programma Dev C++ Note di utilizzo 1 Prerequisiti Utilizzo di Windows Effettuare il download da Internet Compilazione di un programma 2 1 Introduzione Lo scopo di queste note è quello di diffondere la conoscenza

Dettagli

Dipartimento di Sistemi e Informatica Università degli Studi di Firenze. Dev-C++ Ing. Michele Banci 27/03/2007 1

Dipartimento di Sistemi e Informatica Università degli Studi di Firenze. Dev-C++ Ing. Michele Banci 27/03/2007 1 Dipartimento di Sistemi e Informatica Università degli Studi di Firenze Dev-C++ Ing. Michele Banci 27/03/2007 1 Utilizzare Dev-C++ Tutti i programmi che seranno realizzati richiedono progetti separati

Dettagli

Talento LAB 4.1 - UTILIZZARE FTP (FILE TRANSFER PROTOCOL) L'UTILIZZO DI ALTRI SERVIZI INTERNET. In questa lezione imparerete a:

Talento LAB 4.1 - UTILIZZARE FTP (FILE TRANSFER PROTOCOL) L'UTILIZZO DI ALTRI SERVIZI INTERNET. In questa lezione imparerete a: Lab 4.1 Utilizzare FTP (File Tranfer Protocol) LAB 4.1 - UTILIZZARE FTP (FILE TRANSFER PROTOCOL) In questa lezione imparerete a: Utilizzare altri servizi Internet, Collegarsi al servizio Telnet, Accedere

Dettagli

DynDevice ECM. La Suite di applicazioni web per velocizzare, standardizzare e ottimizzare il flusso delle informazioni aziendali

DynDevice ECM. La Suite di applicazioni web per velocizzare, standardizzare e ottimizzare il flusso delle informazioni aziendali DynDevice ECM La Suite di applicazioni web per velocizzare, standardizzare e ottimizzare il flusso delle informazioni aziendali Presentazione DynDevice ECM Cos è DynDevice ICMS Le soluzioni di DynDevice

Dettagli

Introduzione a Puppy Linux: installazione su una chiavetta USB

Introduzione a Puppy Linux: installazione su una chiavetta USB Introduzione a Puppy Linux: installazione su una chiavetta USB Alex Gotev 1 Contenuti Che cos'è Puppy Linux? Come posso averlo? Come si avvia? Che programmi include? Installazione su Chiavetta USB Domande

Dettagli

Web Conferencing Open Source

Web Conferencing Open Source Web Conferencing Open Source A cura di Giuseppe Maugeri g.maugeri@bembughi.org 1 Cos è BigBlueButton? Sistema di Web Conferencing Open Source Basato su più di quattordici componenti Open-Source. Fornisce

Dettagli

Configurazioni Mobile Connect

Configurazioni Mobile Connect Mailconnect Mail.2 L EVOLUZIONE DELLA POSTA ELETTRONICA Configurazioni Mobile Connect iphone MOBILE CONNECT CONFIGURAZIONE MOBILE CONNECT PER IPHONE CONFIGURAZIONE IMAP PER IPHONE RUBRICA CONTATTI E IPHONE

Dettagli

HORIZON SQL CONFIGURAZIONE DI RETE

HORIZON SQL CONFIGURAZIONE DI RETE 1-1/9 HORIZON SQL CONFIGURAZIONE DI RETE 1 CARATTERISTICHE DI UN DATABASE SQL...1-2 Considerazioni generali... 1-2 Concetto di Server... 1-2 Concetto di Client... 1-2 Concetto di database SQL... 1-2 Vantaggi...

Dettagli

Rational Asset Manager, versione 7.1

Rational Asset Manager, versione 7.1 Rational Asset Manager, versione 7.1 Versione 7.1 Guida all installazione Rational Asset Manager, versione 7.1 Versione 7.1 Guida all installazione Note Prima di utilizzare queste informazioni e il prodotto

Dettagli

File Leggimi relativo a Quark Licensing Administrator 4.5.0.2

File Leggimi relativo a Quark Licensing Administrator 4.5.0.2 File Leggimi relativo a Quark Licensing Administrator 4.5.0.2 INDICE Indice File Leggimi relativo a Quark Licensing Administrator 4.5.0.2...4 Requisiti di sistema: QLA Server...5 Requisiti di sistema:

Dettagli

Simplex Gestione Hotel

Simplex Gestione Hotel Simplex Gestione Hotel Revisione documento 01-2012 Questo documento contiene le istruzioni per l'utilizzo del software Simplex Gestione Hotel. E' consentita la riproduzione e la distribuzione da parte

Dettagli

FIRESHOP.NET. Gestione Utility & Configurazioni. Rev. 2014.3.1 www.firesoft.it

FIRESHOP.NET. Gestione Utility & Configurazioni. Rev. 2014.3.1 www.firesoft.it FIRESHOP.NET Gestione Utility & Configurazioni Rev. 2014.3.1 www.firesoft.it Sommario SOMMARIO Introduzione... 4 Impostare i dati della propria azienda... 5 Aggiornare il programma... 6 Controllare l integrità

Dettagli

TeamViewer 8 Manuale Meeting

TeamViewer 8 Manuale Meeting TeamViewer 8 Manuale Meeting Rev 8.0-12/2012 TeamViewer GmbH Kuhnbergstraße 16 D-73037 Göppingen www.teamviewer.com Indice 1 Informazioni su TeamViewer... 5 1.1 Informazioni sul software... 5 1.2 Informazioni

Dettagli

Le Reti Informatiche

Le Reti Informatiche Le Reti Informatiche modulo 10 Prof. Salvatore Rosta www.byteman.it s.rosta@byteman.it 1 Nomenclatura: 1 La rappresentazione di uno schema richiede una serie di abbreviazioni per i vari componenti. Seguiremo

Dettagli

Manuale d uso. Congratulazioni per aver scelto e-tab. Ti ringraziamo per la Tua fiducia e la decisione di comprare il nostro prodotto!

Manuale d uso. Congratulazioni per aver scelto e-tab. Ti ringraziamo per la Tua fiducia e la decisione di comprare il nostro prodotto! Manuale d uso Congratulazioni per aver scelto e-tab. Ti ringraziamo per la Tua fiducia e la decisione di comprare il nostro prodotto! Giacchè noi costantemente aggiorniamo e miglioriamo il Tuo e-tab, potrebbero

Dettagli

VIRTUALIZE IT. www.digibyte.it - digibyte@digibyte.it

VIRTUALIZE IT. www.digibyte.it - digibyte@digibyte.it il server? virtualizzalo!! Se ti stai domandando: ma cosa stanno dicendo? ancora non sai che la virtualizzazione è una tecnologia software, oggi ormai consolidata, che sta progressivamente modificando

Dettagli

Manuale d uso Apache OpenMeetings (Manuale Utente + Manuale Amministratore)

Manuale d uso Apache OpenMeetings (Manuale Utente + Manuale Amministratore) Manuale d uso Apache OpenMeetings (Manuale Utente + Manuale Amministratore) Autore: Matteo Veroni Email: matver87@gmail.com Sito web: matteoveroni@altervista.org Fonti consultate: http://openmeetings.apache.org/

Dettagli

BlackBerry Torch 9800 Smartphone

BlackBerry Torch 9800 Smartphone BlackBerry Torch 9800 Smartphone Manuale dell'utente Versione: 6.0 Per accedere ai manuali dell'utente più recenti, visitare il sito Web www.blackberry.com/docs/smartphones SWDT643442-941426-0127010155-004

Dettagli

FileMaker Server 13. Guida di FileMaker Server

FileMaker Server 13. Guida di FileMaker Server FileMaker Server 13 Guida di FileMaker Server 2010-2013 FileMaker, Inc. Tutti i diritti riservati. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 Stati Uniti FileMaker e Bento sono

Dettagli

Manuale - TeamViewer 6.0

Manuale - TeamViewer 6.0 Manuale - TeamViewer 6.0 Revision TeamViewer 6.0 9947c Indice Indice 1 Ambito di applicazione... 1 1.1 Informazioni su TeamViewer... 1 1.2 Le nuove funzionalità della Versione 6.0... 1 1.3 Funzioni delle

Dettagli

Cross Software ltd Malta Pro.Sy.T Srl. Il gestionale come l'avete sempre sognato... Pag. 1

Cross Software ltd Malta Pro.Sy.T Srl. Il gestionale come l'avete sempre sognato... Pag. 1 Il gestionale come l'avete sempre sognato... Pag. 1 Le funzionalità di X-Cross La sofisticata tecnologia di CrossModel, oltre a permettere di lavorare in Internet come nel proprio ufficio e ad avere una

Dettagli

Seagate Access per Personal Cloud Manuale utente

Seagate Access per Personal Cloud Manuale utente Seagate Access per Personal Cloud Manuale utente 2015 Seagate Technology LLC. Tutti i diritti riservati. Seagate, Seagate Technology, il logo Wave e FreeAgent sono marchi depositati o marchi registrati

Dettagli

SISSI IN RETE. Quick Reference guide guida di riferimento rapido

SISSI IN RETE. Quick Reference guide guida di riferimento rapido SISSI IN RETE Quick Reference guide guida di riferimento rapido Indice generale Sissi in rete...3 Introduzione...3 Architettura Software...3 Installazione di SISSI in rete...3 Utilizzo di SISSI in Rete...4

Dettagli

Client di Posta Elettronica PECMailer

Client di Posta Elettronica PECMailer Client di Posta Elettronica PECMailer PECMailer è un semplice ma completo client di posta elettronica, ovvero un programma che consente di gestire la composizione, la trasmissione, la ricezione e l'organizzazione

Dettagli

Background (sfondo): Finestra: Una finestra serve a mostrare il contenuto di un disco o di una cartella -, chiamata anche directory.

Background (sfondo): Finestra: Una finestra serve a mostrare il contenuto di un disco o di una cartella -, chiamata anche directory. @ PC (Personal computer): Questa sigla identificò il primo personal IBM del 1981 a cura di R.Mangini Archiviazione: Il sistema operativo si occupa di archiviare i file. Background (sfondo): Cursore: Nei

Dettagli

Testi della Guida introduttiva a cura di Martin Ley. Revisione e controllo qualità: Cristina Bachmann, Heiko Bischoff, Marion Bröer, Sabine Pfeifer,

Testi della Guida introduttiva a cura di Martin Ley. Revisione e controllo qualità: Cristina Bachmann, Heiko Bischoff, Marion Bröer, Sabine Pfeifer, Guida Introduttiva Testi della Guida introduttiva a cura di Martin Ley. Revisione e controllo qualità: Cristina Bachmann, Heiko Bischoff, Marion Bröer, Sabine Pfeifer, Heike Schilling. Data di rilascio:

Dettagli

Aggiornamento del firmware per iphone con connettore Lightning compatibile con AppRadio Mode

Aggiornamento del firmware per iphone con connettore Lightning compatibile con AppRadio Mode Aggiornamento del firmware per iphone con connettore Lightning compatibile con AppRadio Mode Istruzioni sull aggiornamento per i modelli di navigazione: AVIC-F40BT, AVIC-F940BT, AVIC-F840BT e AVIC-F8430BT

Dettagli

Progettazione di sistemi Embedded

Progettazione di sistemi Embedded Progettazione di sistemi Embedded Corso introduttivo di progettazione di sistemi embedded A.S. 2013/2014 proff. Nicola Masarone e Stefano Salvatori Eccetto dove diversamente specificato, i contenuti di

Dettagli

Meetecho s.r.l. Web Conferencing and Collaboration tools. Guida all installazione e all uso di Meetecho beta

Meetecho s.r.l. Web Conferencing and Collaboration tools. Guida all installazione e all uso di Meetecho beta Web Conferencing and Collaboration tools Passo 1: registrazione presso il sito Accedere al sito www.meetecho.com e registrarsi tramite l apposito form presente nella sezione Reserved Area. In fase di registrazione

Dettagli

C O M E I N I Z I A R E A U S A R E U N T A B L E T A N D R O I D

C O M E I N I Z I A R E A U S A R E U N T A B L E T A N D R O I D C O M E I N I Z I A R E A U S A R E U N T A B L E T A N D R O I D Se avete un tablet android, ma non avete la minima idea di come accenderlo, usarlo e avviarlo, seguite queste nostre indicazioni 1. ATTIVAZIONE

Dettagli

WEB Conference, mini howto

WEB Conference, mini howto Prerequisiti: WEB Conference, mini howto Per potersi collegare o creare una web conference è necessario: 1) Avere un pc con sistema operativo Windows XP o vista (windows 7 non e' ancora certificato ma

Dettagli

Manuale Software. www.smsend.it

Manuale Software. www.smsend.it Manuale Software www.smsend.it 1 INTRODUZIONE 3 Multilanguage 4 PANNELLO DI CONTROLLO 5 Start page 6 Profilo 7 Ordini 8 Acquista Ricarica 9 Coupon AdWords 10 Pec e Domini 11 MESSAGGI 12 Invio singolo sms

Dettagli

Sistema di telecomunicazione per le piccole e medie imprese.

Sistema di telecomunicazione per le piccole e medie imprese. Sistema di telecomunicazione per le piccole e medie imprese. Sistema di telecomunicazione Promelit ipecs MG. Descrizione del Sistema: L azienda di oggi deve saper anche essere estesa : non confinata in

Dettagli

INSTALLAZIONE E UTILIZZO DEL COMPILATORE Code::Blocks 8.02

INSTALLAZIONE E UTILIZZO DEL COMPILATORE Code::Blocks 8.02 INSTALLAZIONE E UTILIZZO DEL COMPILATORE Code::Blocks 8.02 Download Si può scaricare gratuitamente la versione per il proprio sistema operativo (Windows, MacOS, Linux) dal sito: http://www.codeblocks.org

Dettagli

Comandi filtro: sed. Se non si specificano azioni, sed stampa sullo standard output le linee in input, lasciandole inalterate.

Comandi filtro: sed. Se non si specificano azioni, sed stampa sullo standard output le linee in input, lasciandole inalterate. Comandi filtro: sed Il nome del comando sed sta per Stream EDitor e la sua funzione è quella di permettere di editare il testo passato da un comando ad un altro in una pipeline. Ciò è molto utile perché

Dettagli

Agilent OpenLAB Chromatography Data System (CDS)

Agilent OpenLAB Chromatography Data System (CDS) Agilent OpenLAB Chromatography Data System (CDS) EZChrom Edition e ChemStation Edition Requisiti hardware e software Agilent Technologies Informazioni legali Agilent Technologies, Inc. 2013 Nessuna parte

Dettagli

Mini manuale di Audacity.

Mini manuale di Audacity. Mini manuale di Audacity. Questo mini manuale è parte del corso on-line Usare il software libero di Altrascuola. Il corso è erogato all'interno del portale per l'e-learning Altrascuola con la piattaforma

Dettagli

Per Iniziare con Parallels Desktop 10

Per Iniziare con Parallels Desktop 10 Per Iniziare con Parallels Desktop 10 Copyright 1999-2014 Parallels IP Holdings GmbH e i suoi affiliati. Tutti i diritti riservati. Parallels IP Holdings GmbH Vordergasse 59 8200 Schaffhausen Svizzera

Dettagli

TeamViewer 8 Manuale Controllo remoto

TeamViewer 8 Manuale Controllo remoto TeamViewer 8 Manuale Controllo remoto Rev 8.0-12/2012 TeamViewer GmbH Kuhnbergstraße 16 D-73037 Göppingen www.teamviewer.com Indice 1 Informazioni su TeamViewer... 6 1.1 Informazioni sul software... 6

Dettagli

La gestione documentale con il programma Filenet ed il suo utilizzo tramite la tecnologia.net. di Emanuele Mattei (emanuele.mattei[at]email.

La gestione documentale con il programma Filenet ed il suo utilizzo tramite la tecnologia.net. di Emanuele Mattei (emanuele.mattei[at]email. La gestione documentale con il programma Filenet ed il suo utilizzo tramite la tecnologia.net di Emanuele Mattei (emanuele.mattei[at]email.it) Introduzione In questa serie di articoli, vedremo come utilizzare

Dettagli

MANUALE UTENTE DEL SOFTWARE DI GESTIONE DEGLI ART. SDVR040A/SDVR080A/SDVR160A

MANUALE UTENTE DEL SOFTWARE DI GESTIONE DEGLI ART. SDVR040A/SDVR080A/SDVR160A MANUALE UTENTE DEL SOFTWARE DI GESTIONE DEGLI ART. SDVR040A/SDVR080A/SDVR160A Leggere attentamente questo manuale prima dell utilizzo e conservarlo per consultazioni future Via Don Arrigoni, 5 24020 Rovetta

Dettagli

CATTURARE LO SCHERMO INTERO O LA FINESTRA ATTIVA

CATTURARE LO SCHERMO INTERO O LA FINESTRA ATTIVA CATTURARE LO SCHERMO INTERO O LA FINESTRA ATTIVA Supponiamo di voler eseguire una istantanea del nostro desktop, quella che in gergo si chiama Screenshot (da screen, schermo, e shot, scatto fotografico).

Dettagli

Come difendersi dai VIRUS

Come difendersi dai VIRUS Come difendersi dai VIRUS DEFINIZIONE Un virus è un programma, cioè una serie di istruzioni, scritte in un linguaggio di programmazione, in passato era di solito di basso livello*, mentre con l'avvento

Dettagli

MINI GUIDA SINTETICA per l uso della lavagna interattiva multimediale

MINI GUIDA SINTETICA per l uso della lavagna interattiva multimediale MINI GUIDA SINTETICA per l uso della lavagna interattiva multimediale InterWrite SchoolBoard è un software per lavagna elettronica di facile utilizzo. Può essere adoperata anche da studenti diversamente

Dettagli

WINDOWS - Comandi rapidi da tastiera più utilizzati.

WINDOWS - Comandi rapidi da tastiera più utilizzati. WINDOWS - Comandi rapidi da tastiera più utilizzati. La prima colonna indica il tasto da premere singolarmente e poi rilasciare. La seconda e terza colonna rappresenta la combinazione dei i tasti da premere

Dettagli

Corso di Alfabetizzazione Informatica

Corso di Alfabetizzazione Informatica Corso di Alfabetizzazione Informatica Scopo di questo corso, vuole essere quello di fornire ad ognuno dei partecipanti, indipendentemente dalle loro precedenti conoscenze informatiche, l apprendimento

Dettagli

Analisi dei requisiti e casi d uso

Analisi dei requisiti e casi d uso Analisi dei requisiti e casi d uso Indice 1 Introduzione 2 1.1 Terminologia........................... 2 2 Modello della Web Application 5 3 Struttura della web Application 6 4 Casi di utilizzo della Web

Dettagli

Problema: al momento dell autenticazione si riceve il messaggio Certificato digitale non ricevuto Possibili cause: 1) La smart card non è una CNS e

Problema: al momento dell autenticazione si riceve il messaggio Certificato digitale non ricevuto Possibili cause: 1) La smart card non è una CNS e Problema: al momento dell autenticazione si riceve il messaggio Certificato digitale non ricevuto Possibili cause: 1) La smart card non è una CNS e non contiene il certificato di autenticazione: è necessario

Dettagli

Guida Samsung Galaxy S Advance

Guida Samsung Galaxy S Advance Guida Samsung Galaxy S Advance Il manuale utente completo del telefono si può scaricare da qui: http://bit.ly/guidasamsung NB: la guida è riferita solo al Samsung Galaxy S Advance, con sistema operativo

Dettagli

MATRICE DELLE FUNZIONI DI DRAGON NATURALLYSPEAKING 12 CONFRONTO TRA EDIZIONI DEL PRODOTTO

MATRICE DELLE FUNZIONI DI DRAGON NATURALLYSPEAKING 12 CONFRONTO TRA EDIZIONI DEL PRODOTTO MATRICE DELLE FUNZIONI DI DRAGON NATURALLYSPEAKING 12 CONFRONTO TRA EDIZIONI DEL PRODOTTO Precisione del riconoscimento Velocità di riconoscimento Configurazione del sistema Correzione Regolazione della

Dettagli

Guida al nuovo sistema di posta. CloudMail UCSC. (rev.doc. 1.4)

Guida al nuovo sistema di posta. CloudMail UCSC. (rev.doc. 1.4) Guida al nuovo sistema di posta CloudMail UCSC (rev.doc. 1.4) L Università per poter migliorare l utilizzo del sistema di posta adeguandolo agli standard funzionali più diffusi ha previsto la migrazione

Dettagli

Configuration Managment Configurare EC2 su AWS. Tutorial. Configuration Managment. Configurare il servizio EC2 su AWS. Pagina 1

Configuration Managment Configurare EC2 su AWS. Tutorial. Configuration Managment. Configurare il servizio EC2 su AWS. Pagina 1 Tutorial Configuration Managment Configurare il servizio EC2 su AWS Pagina 1 Sommario 1. INTRODUZIONE... 3 2. PROGRAMMI NECESSARI... 4 3. PANNELLO DI CONTROLLO... 5 4. CONFIGURARE E LANCIARE UN ISTANZA...

Dettagli

Calc è il programma per la gestione di fogli di calcolo della suite OpenOffice.org.

Calc è il programma per la gestione di fogli di calcolo della suite OpenOffice.org. Calc è il programma per la gestione di fogli di calcolo della suite OpenOffice.org. Nuovo documento Anteprima di stampa Annulla Galleria Apri Controllo ortografico Ripristina Sorgente dati Salva Controllo

Dettagli

Guida all'installazione ed uso dell'app RXCamLink

Guida all'installazione ed uso dell'app RXCamLink Guida all'installazione ed uso dell'app RXCamLink Questa guida riporta i passi relativi all'installazione ed all'utilizzo dell'app "RxCamLink" per il collegamento remoto in mobilità a sistemi TVCC basati

Dettagli

GESTIRE LA BIBLIOGRAFIA

GESTIRE LA BIBLIOGRAFIA GESTIRE LA BIBLIOGRAFIA STRUMENTI DI GESTIONE BIBLIOGRAFICA I software di gestione bibliografica permettono di raccogliere, catalogare e organizzare diverse tipologie di materiali, prendere appunti, formattare

Dettagli

Installazione LINUX 10.0

Installazione LINUX 10.0 Installazione LINUX 10.0 1 Principali passi Prima di iniziare con l'installazione è necessario entrare nel menu di configurazione del PC (F2 durante lo start-up) e selezionare nel menu di set-up il boot

Dettagli

Installazione ed attivazione della "SUITE OFFIS" versione SERVER

Installazione ed attivazione della SUITE OFFIS versione SERVER Installazione ed attivazione della "SUITE OFFIS" versione SERVER Premessa La versione server di OFFIS può essere installata e utilizzata indifferentemente da PC/Win o Mac/Osx e consente l'accesso contemporaneo

Dettagli

Guida all'installazione di SLPct. Manuale utente. Evoluzioni Software www.evoluzionisoftware.it info@evoluzionisoftware.it

Guida all'installazione di SLPct. Manuale utente. Evoluzioni Software www.evoluzionisoftware.it info@evoluzionisoftware.it Guida all'installazione di SLPct Manuale utente Evoluzioni Software www.evoluzionisoftware.it info@evoluzionisoftware.it Premessa Il redattore di atti giuridici esterno SLpct è stato implementato da Regione

Dettagli

UBUNTU SERVER. Installazione e configurazione di Ubuntu Server. M. Cesa 1

UBUNTU SERVER. Installazione e configurazione di Ubuntu Server. M. Cesa 1 UBUNTU SERVER Installazione e configurazione di Ubuntu Server M. Cesa 1 Ubuntu Server Scaricare la versione deisiderata dalla pagina ufficiale http://www.ubuntu.com/getubuntu/download-server Selezioniare

Dettagli

GESTIONE DELLA E-MAIL

GESTIONE DELLA E-MAIL GESTIONE DELLA E-MAIL Esistono due metodologie, completamente diverse tra loro, in grado di consentire la gestione di più caselle di Posta Elettronica: 1. tramite un'interfaccia Web Mail; 2. tramite alcuni

Dettagli

TeamViewer 7 Manuale Controllo remoto

TeamViewer 7 Manuale Controllo remoto TeamViewer 7 Manuale Controllo remoto TeamViewer GmbH Kuhnbergstraße 16 D-73037 Göppingen teamviewer.com Indice 1 Informazioni su TeamViewer... 5 1.1 Informazioni sul software... 5 1.2 Informazioni sul

Dettagli

Funzioni di base. Manualino OE6. Outlook Express 6

Funzioni di base. Manualino OE6. Outlook Express 6 Manualino OE6 Microsoft Outlook Express 6 Outlook Express 6 è un programma, incluso nel browser di Microsoft Internet Explorer, che ci permette di inviare e ricevere messaggi di posta elettronica. È gratuito,

Dettagli

Documentazione Servizio SMS WEB. Versione 1.0

Documentazione Servizio SMS WEB. Versione 1.0 Documentazione Servizio SMS WEB Versione 1.0 1 Contenuti 1 INTRODUZIONE...5 1.1 MULTILANGUAGE...5 2 MESSAGGI...7 2.1 MESSAGGI...7 2.1.1 INVIO SINGOLO SMS...7 2.1.2 INVIO MULTIPLO SMS...9 2.1.3 INVIO MMS

Dettagli

Installazione di GFI Network Server Monitor

Installazione di GFI Network Server Monitor Installazione di GFI Network Server Monitor Requisiti di sistema I computer che eseguono GFI Network Server Monitor richiedono: i sistemi operativi Windows 2000 (SP4 o superiore), 2003 o XP Pro Windows

Dettagli

IT-BOOK. Domini Hosting Web marketing E-mail e PEC

IT-BOOK. Domini Hosting Web marketing E-mail e PEC 5 giugno 09 IT-BOOK Configurazioni e cartatteristiche tecniche possono essere soggette a variazioni senza preavviso. Tutti i marchi citati sono registrati dai rispettivi proprietari. Non gettare per terra:

Dettagli

Sizing di un infrastruttura server con VMware

Sizing di un infrastruttura server con VMware Sizing di un infrastruttura server con VMware v1.1 Matteo Cappelli Vediamo una serie di best practices per progettare e dimensionare un infrastruttura di server virtuali con VMware vsphere 5.0. Innanzitutto

Dettagli

Energy Studio Manager Manuale Utente USO DEL SOFTWARE

Energy Studio Manager Manuale Utente USO DEL SOFTWARE Energy Studio Manager Manuale Utente USO DEL SOFTWARE 1 ANALYSIS.EXE IL PROGRAMMA: Una volta aperto il programma e visualizzato uno strumento il programma apparirà come nell esempio seguente: Il programma

Dettagli

Francesco Fumelli. iphone. Cos è, come funziona. Simonelli electronic Book

Francesco Fumelli. iphone. Cos è, come funziona. Simonelli electronic Book Francesco Fumelli iphone The Line by Simonelli Editore Cos è, come funziona Simonelli electronic Book Simonelli electronic Book «iphone: Cos è, come funziona» di Francesco Fumelli ISBN 978-88-7647-327-2

Dettagli

In questo manuale, si fa riferimento a ipod touch 5a generazione e iphone 5 con il solo termine iphone con connettore Lightning.

In questo manuale, si fa riferimento a ipod touch 5a generazione e iphone 5 con il solo termine iphone con connettore Lightning. In questo manuale, si fa riferimento a ipod touch 5a generazione e iphone 5 con il solo termine iphone con connettore Lightning. Per collegare un iphone con connettore Lightning ad SPH-DA100 AppRadio e

Dettagli

CHIAVETTA INTERNET ONDA MT503HSA

CHIAVETTA INTERNET ONDA MT503HSA CHIAVETTA INTERNET ONDA MT503HSA Manuale Utente www.ondacommunication.com CHIAVETTA INTERNET MT503HSA 7.2 MEGA UMTS/EDGE - HSDPA Manuale Utente Rev 1.0 33080, Roveredo in Piano (PN) Pagina 1 di 31 INDICE

Dettagli

INDICE Informazioni Generali... 4. Comprare ebook con Kobo Desktop... 8. Usare la Libreria di Kobo Desktop... 10. Leggere su Kobo Desktop...

INDICE Informazioni Generali... 4. Comprare ebook con Kobo Desktop... 8. Usare la Libreria di Kobo Desktop... 10. Leggere su Kobo Desktop... Kobo Desktop Manuale Utente INDICE Informazioni Generali... 4 Installare Kobo Desktop su Windows... 5 Installare Kobo Desktop su Mac... 6 Comprare ebook con Kobo Desktop... 8 Usare la Libreria di Kobo

Dettagli

How to Develop Accessible Linux Applications

How to Develop Accessible Linux Applications How to Develop Accessible Linux Applications Sharon Snider Copyright 2002 IBM Corporation v1.1, 2002-05-03 Diario delle Revisioni Revisione v1.1 2002-05-03 Revisionato da: sds Convertito in DocBook XML

Dettagli

I.Stat Guida utente Versione 1.7 Dicembre 2010

I.Stat Guida utente Versione 1.7 Dicembre 2010 I.Stat Guida utente Versione 1.7 Dicembre 2010 1 Sommario INTRODUZIONE 3 I concetti principali di I.Stat 4 Organizzazione dei dati 4 Ricerca 5 GUIDA UTENTE 6 Per iniziare 6 Selezione della lingua 7 Individuazione

Dettagli

Access Point WiFi Powerline 500 XWNB5201 - Guida all installazione

Access Point WiFi Powerline 500 XWNB5201 - Guida all installazione Access Point WiFi Powerline 500 XWNB5201 - Guida all installazione Assistenza tecnica Grazie per aver scelto i prodotti NETGEAR. Una volta completata l'installazione del dispositivo, individuare il numero

Dettagli

Il compilatore Dev-C++

Il compilatore Dev-C++ Il compilatore Dev-C++ A cura del dott. Marco Cesati 1 Il compilatore Dev-C++ Compilatore per Windows: http://www.bloodshed.net/devcpp.html Installazione Configurazione Utilizzazione 2 1 Requisiti di sistema

Dettagli

EndNote Web. Quick Reference Card THOMSON SCIENTIFIC

EndNote Web. Quick Reference Card THOMSON SCIENTIFIC THOMSON SCIENTIFIC EndNote Web Quick Reference Card Web è un servizio online ideato per aiutare studenti e ricercatori nel processo di scrittura di un documento di ricerca. ISI Web of Knowledge, EndNote

Dettagli

Integrated Development Environment (IDE) DevC++ 4.9.9.2

Integrated Development Environment (IDE) DevC++ 4.9.9.2 Integrated Development Environment (IDE) DevC++ 4.9.9.2 Manuale utente Data ultima revisione: 22/10/2008 Fondamenti di informatica Università Facoltà Corso di laurea Politecnico di Bari 1 a Facoltà di

Dettagli

Acronis Backup & Recovery 10 Advanced Server Virtual Edition. Guida introduttiva

Acronis Backup & Recovery 10 Advanced Server Virtual Edition. Guida introduttiva Acronis Backup & Recovery 10 Advanced Server Virtual Edition Guida introduttiva Questo documento descrive come installare e iniziare a utilizzare Acronis Backup & Recovery 10 Advanced Server Virtual Edition.

Dettagli

MANUALE DI INSTALLAZIONE GESTIONE FLOTTE /REMIND

MANUALE DI INSTALLAZIONE GESTIONE FLOTTE /REMIND Progettisti dentro e oltre l impresa MANUALE DI INSTALLAZIONE GESTIONE FLOTTE /REMIND Pag 1 di 31 INTRODUZIONE Questo documento ha lo scopo di illustrare le modalità di installazione e configurazione dell

Dettagli

Strumenti 3D per SMART Notebook 11.1. Manuale dell'utente

Strumenti 3D per SMART Notebook 11.1. Manuale dell'utente Strumenti 3D per SMART Notebook 11.1 Manuale dell'utente Registrazione del prodotto Se si registra il prodotto SMART, si verrà informati delle nuove funzionalità e aggiornamenti software disponibili. Registrazione

Dettagli

APRS su Linux con Xastir, installazione dai sorgenti

APRS su Linux con Xastir, installazione dai sorgenti APRS su Linux con Xastir Installazione dai sorgenti L installazione di Xastir Per installare Xastir non è richiesto essere un guru di Linux, anche se una conoscenza minima della piattaforma è necessaria.

Dettagli

La suite Dental Trey che semplifica il tuo mondo.

La suite Dental Trey che semplifica il tuo mondo. La suite Dental Trey che semplifica il tuo mondo. impostazioni di sistema postazione clinica studio privato sterilizzazione magazzino segreteria amministrazione sala di attesa caratteristiche UNO tiene

Dettagli

Oggetti Lezione 3. aspetti generali e definizione di classi I

Oggetti Lezione 3. aspetti generali e definizione di classi I Programmazione a Oggetti Lezione 3 Il linguaggio Java: aspetti generali e definizione di classi I Sommario Storia e Motivazioni Definizione di Classi Campi e Metodi Istanziazione di oggetti Introduzione

Dettagli

BlackBerry Q10 Smartphone. Versione: 10.1. Manuale utente

BlackBerry Q10 Smartphone. Versione: 10.1. Manuale utente BlackBerry Q10 Smartphone Versione: 10.1 Manuale utente Pubblicato: 15/10/2013 SWD-20131015110931200 Contenuti Introduzione... 9 BlackBerry 10: nuove applicazioni e funzionalità... 10 Introduzione... 14

Dettagli