Sviluppo di un applicazione in ambiente Android per l acquisizione di misure accelerometriche.

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Sviluppo di un applicazione in ambiente Android per l acquisizione di misure accelerometriche."

Transcript

1 Facoltà di Ingegneria Corso di Studi in Ingegneria Informatica Elaborato finale in Sistemi Operativi Sviluppo di un applicazione in ambiente Android per l acquisizione di misure accelerometriche. Anno Accademico Candidato: Alessandro Celotti matr. N46/135 I

2 Grazie di Cuore :3 II

3 Indice Introduzione 4 Capitolo 1. Piattaforma Android Introduzione Architettura delle Applicazioni Activity Service Content Provider Intent Gestione dei Processi e dei Thread 14 Capitolo 2. Accelerometro su Android Sensori su Android Sensori di Movimento (Accelerometro) Classi ed API per l Accelerometro Classi Interfacce Esempio Applicazione Accelerometrica 25 Conclusioni 29 Bibliografia 30 III

4 Introduzione Attualmente i dispositivi cellulari di questa generazione hanno le potenzialità di un calcolatore. Infatti, grazie alle numerose funzionalità offerte da questi cellulari è possibile: telefonare, mandare un , controllare calendari e impegni, accedere alla rete, ascoltare musica o addirittura comporre musica, giocare al proprio videogame preferito, scattare una foto ed altre funzioni. Questi piccoli cellulari, chiamati smartphone, hanno quindi un grosso potenziale informatico. Ma cos è uno smartphone? E un "telefonino multimediale" o "telefonino intelligente" che ha il grosso vantaggio di potersi collegare in rete in qualsiasi istante, ha una grossa potenza di calcolo per le sue dimensioni e permette affidabilità, tutto questo ad un costo comunque contenuto. Picking up where amazing left off dice l Apple rilanciando il suo ultimo prodotto Iphone 4S. [1] Ogni smartphone ha un proprio sistema operativo, ricordiamo: - Windows Mobile. - Apple ios. - Android. - Symbian. Con un insieme di caratteristiche hardware sorprendenti: basti pensare ad esempio al microprocessore del Samsung Galaxy s2 è di tipo dual core. [2] Per il collegamento in rete è fornito il meccanismo di connessione a lungo raggio come le Wireless (Wi-Fi) o a breve raggio come la Bluetooth o in alternativa la connessione 3G che permette sia il trasferimento dati voce (telefonate digitali) e quelle dati non-voce (per l invio di un , instant messaging o il browsing della rete). Altro fattore fondamentale è la sicurezza che devono fornire tali sistemi contro i malware, poiché la maggior parte delle applicazioni sono scaricabili dal Web (basti pensare all Apple Store) e questo è proprio il compito dell ENISA (European Network and Information Security Agency). 4

5 Uno smartphone inoltre possiede una serie di sensori permettono di: misurare la temperatura dell ambiente, la luminosità della stanza per mettere il dispositivo in stand by oppure l utilizzo del GPS integrato per visualizzare la posizione dello smartphone. I sensori più utilizzati all interno di uno smartphone sono: 1. Giroscopio: fornisce indicazioni sulla posizione e l inclinazione multi asse dello smartphone. 2. Accelerometro: fornisce dati sull accelerazione del dispositivo se viene spostato lungo nelle tre dimensioni. 3. Luminosità dell Ambiente: rivela la luminosità ambientale per apportare modifiche alla luminosità del display. 4. Termometro: fornisce dati riguardanti la temperatura della stanza. Questa serie di sensori sono integrati nell hardware del dispositivo e spesso vengono gestiti in maniera completamente diversa per ogni smartphone. Punto d'interesse è il sensore accelerometrico, permette il monitoraggio di sistemi basandoci sulla variazione di accelerazione in qualsiasi contesto. Un accelerometro è uno strumento di misura in grado di misurare l accelerazione di un corpo. La base è quella della rilevazione dell inerzia di una massa sottoposta ad un accelerazione: basandoci sulla legge di Newton a = (F s /m). Un sensore o trasduttori invece è uno strumento che permette di trasformare una qualsiasi grandezza fisica in una tipicamente elettrica. E chiaro che quindi le applicazioni di tali sensori accelerometrici possono essere impiegati nella: medicina, monitoraggio dell ambiente e delle costruzioni, videogiochi, ecc. Esempi di applicazioni: - Nella medicina ad esempio questi sistemi possono essere utilizzati nel monitoraggio del movimento umano quindi sul controllo della postura di una persona per facilitare la riabilitazione. [3] Oppure per la valutazione delle vibrazioni meccaniche a cui può essere esposta una persona e si basa sull applicazione di tali sensori accelerometrici al punto di contatto tra le sorgenti delle vibrazioni ed il corpo del lavoratore esposto. [4] - Nel monitoraggio dell ambiente o delle infrastrutture: sono applicati modelli di tipo sismico. Da valutazioni delle vibrazioni di determinate zone della struttura. Questi dati elaborati sono acquisiti dagli accelerometri, mettendo in relazione i valori di sollecitazione impressi alla struttura. [5] - Videogiochi: ulteriore esempio sono gli odierni videogame che fanno grandissimo uso di tali sensori, basti pensare alla console Wii Sports della Nintendo: posizionando i sensori accelerometrici in un telecomando è possibile giocare a tennis oppure lanciare una palla di bowling. Oppure in applicazioni sugli smartphone è possibile guidare un'automobile semplicemente ruotando il dispositivo. 5

6 Capitolo 1 Piattaforma Android In questo capitolo affronteremo la tematica della piattaforma Android. Cos è Android, come viene sviluppata un applicazione di Android con la sua anatomia e la gestione dei processi e dei threads su tale piattaforma. 1.1 Introduzione Ma cos è Android? E uno software stack (insieme di programmi che lavorano insieme per produrre un risultato: ad esempio un sistema operativo e le sue applicazioni) per dispositivi mobili, includendo un OS, middleware e applicazioni. L'Android SDK provvede i tools e le API necessarie allo sviluppo delle applicazioni sulla piattaforma Android usando il linguaggio di programmazione Java. Le caratteristiche fondamentali: - Application framework: abilita il riuso e il rimpiazzamento delle componenti. - DVM: ottimizzato per i dispositivi mobili. - Browser Integrato. - Graphics: librerie grafiche 2D e 3D. - Supporto Media: per audio, video e immagini in diversi formati. - Bluetooth, Edge, 3G e Wi-Fi. - Sensori: camera, GPS e accelerometri (dipendenti dall'hardware). La Architettura di Android viene descritta da tale diagramma: - Applicazioni: un insieme di applicazioni scritte in Java: client, SMS, calendari, mappe, browser e altre. - Application Framework: offre una piattaforma open-source di sviluppo, Android fornisce agli sviluppatori la possibilità di creare applicazioni innovative. Grazie all'utilizzo del dispositivo hardware, informazioni sulla posizione di accesso ed eseguire servizi in background. Gli sviluppatori hanno pieno accesso alle stesse framework API usate dalle applicazioni di nucleo. Tale architettura è stata progettata per semplificare il riuso delle componenti. Qualsiasi applicazione è soggetta a vincoli di sicurezza imposti dal framework. Questo meccanismo consente ai componenti di essere sostituiti 6

7 dall'utente. Prevede: Content Providers, Resource Manager, Notification Manager e Activity Manager. - Librerie: Android include un insieme di librerie C/C++ usate dai componenti dei sistemi Android. - Android Runtime: Android include un set di librerie di nucleo che provvedono molte delle funzionalità disponibili nelle librerie di nucleo offerte dal linguaggio Java. Ogni applicazione lancia un suo processo, con la propria istanza della Dalvik virtual machine (DVM). La DVM è register-based (generica classe di macchina astratta) ed esegue classi compilate da Java. DVM si basa sul kernel Linux per funzionalità base come la gestione dei Thread e della Low-Level Memory Management. - Kernel Linux: Android si basa su Linux v2.6 per servizi come: sicurezza, gestione della memoria, scheduling dei processi e modello driver. Il kernel è su di un livello di astrazione tra l'hardware e il resto del "software stack". 1.2 Architettura delle Applicazioni Prima dell avvio degli application components, il sistema ricerca nel documento AndroidManifest.xml quali componenti inizializzare. Inoltre verifica i permessi, dichiara il numero minimo di API e le librerie API richieste dall applicazione, le caratteristiche hardware e software dall applicazione (come i sensori). Gli application components sono importanti per lo sviluppo di un applicazione Android. Ognuno di essi ha una sua funzionalità ed è essenziale la sua esistenza. Ci sono quattro tipi di application compontents con distinto scopo e ciclo di vita: Activities: una activity rappresenta un unica schermata con l interfaccia utente. Le attività lavorano in gruppo per dare coerenza. Inoltre se è permesso dall activity padre, si può creare una sorta di gerarchia. Services: un service è un componente che lavora in background per operazioni di lunga durata o svolgere attività per processi remoti. Content Providers: prevede la gestione dei dati di un applicazione in ogni locazione in cui l applicazione può accedere: file system, SQL database o sul web. Broadcast Receivers: tale componente risponde agli annunci al livello di sistema di trasmissione. La maggior parte degli annunci provengono dal sistema (batteria bassa), tuttavia un applicazione può lanciare una trasmissione. Un aspetto unico dello sviluppo di un applicazione Android è che ogni singola applicazione può istanziare una componente di un'altra applicazione. Quando il sistema avvia un componente, in contemporanea parte un processo, se non è già in esecuzione, che istanzia le classi necessarie dal componente, perciò tali applicazioni non hanno un unico entry point. All interno di un applicazione Android bisogna inviare un messaggio per utilizzare un determinato componente. Per l attivazione di un componente bisogna inviare un messaggio asincrono chiamato itent Activity Un Activity mostra con quali utenti interagire nell ordine di fare qualcosa, ognuna di essa ha una sua finestra nella quale viene disegnata l interfaccia utente. Tale finestra solitamente 7

8 riempie lo schermo, anche se in alcuni casi potrebbe essere più piccola ed essere spostata verso l alto. Un applicazione consiste in un insieme di attività che sono legate in maniera debole tra di loro. Un attività in un applicazione viene considerata come main activity, nel momento che l applicazione viene lanciata per la prima volta. Su questa logica ogni attività può richiamarne un altra per eseguire altre operazioni, quella precedentemente in esecuzione viene arrestata ma non terminata. Infatti viene conservata l activity all interno di una pila la back stack, la nuova attività viene inserita anch essa nella back stack. Questa coda utilizza un meccanismo di gestione di tipo LIFO (Last In, First Out), perciò quando un utente ha terminato la sua operazione con la corrente attività e preme il pulsante back, l attività viene estratta dalla coda e viene distrutta riprendendo l attività precedente. Quando un attività viene bloccata a causa di un altra attività, il sistema notifica tale cambio di stato attraverso i metodi di callback del ciclo di vita dell activity. Esistono un insieme di metodi di callback ognuno per specificare un cambio di stato (creazione, distruzione, ripresa) e ognuno di essi fornisce l opportunità di svolgere un lavoro specifico legato a quel cambio di stato. Ad esempio quando si blocca un attività tutte le risorse di grandi dimensioni devono essere rilasciate, quando invece è ripresa l esecuzione dell attività è possibile ottenere nuovamente tutte le risorse. Creazione di un Attività: Per creare un attività bisogna creare una sottoclasse di Activity [6]. Nella sotto classe bisogna implementare i metodi di callback necessari per i cambiamenti di stato del ciclo di vita dell attività. I metodi più importanti sono: 1. oncreate(): serve per creare un attività e tutte le sue componenti fondamentali. Ad esempio è qui che viene richiamato setcontentview() per definire il layout per l interfaccia utente dell attività. 2. onpause(): il sistema chiama tale metodo per indicare che l utente ha lasciato l attività, questo non significa che l attività viene distrutta. In questo stato bisognerebbe impiegare tutte le modifiche che devono essere mantenute al di là della sessione utente corrente, poiché l utente potrebbe non tornare. Iniziare un Attività: Si può iniziare una nuova attività, chiamando startactivity(), passandogli un Intent che descrive l attività che si vuole inizializzare. L intent specifica l esatta attività o l operazione che si desidera eseguire, in modo che il sistema sceglie l attività più consona all operazione. Un intent può trasportare pure una piccola quantità di dati per quando sarà avviata l attività. Capita spesso all interno di un attività di dover richiamare una nuova attività nota: in questo caso bisogna semplicemente fornire all interno dell intent il nome della classe dell attività da avviare: Intent intent = new Intent (this, SignInActivity.class); startactivity(intent); *SignInActivity è la nuova attività da iniziare. Capita di dover iniziare un attività per un risultato in questo caso utilizziamo la chiamata startactivityforresult(), per poter ricevere il risultato dalla successiva attività bisogna implementare il metodo onactivityresult(), in modo che l attività restituisce un intent all interno del metodo. 8

9 Terminazione di un Attività: Per terminare un attività o utilizziamo il metodo finish() oppure il metodo per terminare un attività precedentemente inizializzata finishactivity( ). In realtà nella maggior parte dei casi non si dovrebbero utilizzare tali metodi, ma è proprio il sistema Android a gestire la vita delle attività. Gestione dell Activity Lifecycle: Per la creazione di un applicazione forte e flessibile occorre implementare per bene i metodi di callback utilizzati nel ciclo di vita dell activity. Il ciclo di vita di un attività è direttamente influenzato dalle associazioni con altre attività, dai suoi task e dalla back stack. Un attività esiste in tre stati fondamentali: Ripreso: l attività è in primo piano dello schermo ed ha l attenzione dell utente. Spesso questo stato è noto come running. In Pausa: Un altra attività è in primo piano ed ha attenzione, ma questa è ancora visibile. Un attività in pausa è in vita, il suo oggetto rimane in memoria mantenendo tutte le informazioni necessarie e rimane collegata al gestore della finestra, tuttavia può essere uccisa dal sistema in condizioni di memoria estremamente basse. Arrestata: Un attività arrestata è completamente oscurata da un altra pertanto si dice che agisce in background. E sempre ancora in vita con l oggetto dell attività che rimane in memoria, ma non è collegato al gestore della finestra. Poiché non è più visibile all utente, può essere ucciso dal sistema quando è richiesta memoria altrove. Quando un attività è in pausa o è arrestata, il sistema può rilasciare l applicazione dalla memoria, richiedere che finisca o semplicemente può uccidere i suoi processi. Fig. 01 Ciclo di vita dell attività 9

10 Le procedure di callback per la gestione dell attività si dividono in tre cicli annidati fondamentali nel Lifetime dell attività: 1. Entire Lifetime dell attività è legata tra le due chiamate di oncreate() e ondestroy() che identificano la creazione e la terminazione dell attività. E quindi uno stato globale dove le risorse vengono assegnate all atto della creazione e rilasciate alla terminazione. 2. Visible Lifetime legata tra le due chiamate onstart() e onstop(). In questo tempo l utente può vedere l attività sullo schermo ed interagire con essa. E possibile mantenere le risorse che sono necessarie a mostrare l attività all utente. Tali chiamate si alternano più volte durante il ciclo di vita dell attività poiché queste si alternano ad essere visibili o nascoste dall utente. 3. Foreground Lifetime legata tra le chiamate onresume() e onpause(). L attività si trova di fronte le altre sullo schermo avendo l attenzione dell utente. Un attività effettua spesso questo tipo di transizione. Alcuni metodi non sono Killable altri invece sì (onpause(), onstop(), ondestroy()): ad esempio un attività diventa killable quando passa dallo stato di onpause() fin quando non ritorna allo stato onresume(). Task e Back Stack: Un task è una collezione di attività che interagiscono con l utente per fornire un operazione. Tali attività vengono gestiti nello stack con gestione LIFO. Quando aggiungo un attività questa viene inserita nella coda, nel momento in cui la estraggo sto effettuando una navigazione all indietro, usando il tasto back l attività viene eliminata dalla coda. Fig. 02 Esempio inserimento, estrazione dallo back stack Un task è un unità coesiva che può muoversi verso il background, quando l utente inizia un nuovo task o passa alla schermata di Home, tramite il pulsante Home. Nel background tutte le attività sono in stato di arrestato mentre il back stack rimane intatto. Un task può invece ritornare nel foreground, riprendendo quello che l utente aveva lasciato precedentemente. Ad esempio presi in considerazioni due Task A e B con un certo numero di attività ciascuno, se inizialmente il Task corrente è quello A e viene premuto il tasto Home, il task entra in secondo piano e il sistema avvia il task B con il proprio stack con le sue attività. Qualora l utente dovesse tornare nell home e viene selezionata l applicazione iniziata dal Task A, questo torna in foreground con le proprie attività nello stack, riprendendo l esecuzione. L utente può decidere se tornare al task B o iniziare un nuovo task. Questo è un esempio di multitasking su sistema Android. Possono essere mantenuti più task in background, ma il sistema può decidere se distruggerli in modo da preservare la memoria per nuove attività. Un ulteriore particolarità è data dal fatto che all interno della pila è possibile istanziare più volte la stessa attività da più Task. In modo che quando l utente naviga all indietro con il pulsante indietro, ogni istanza si rivela per l ordine con cui le attività sono state aperte. Tuttavia è possibile modificare tale comportamento. Le operazioni di modifica del comportamento del sistema vengono gestite dal Gestore dei Task. 10

11 Salvataggio di Stato: Qualora il sistema dovesse distruggere un attività per riservare memoria, viene distrutto l oggetto, pertanto il sistema non può semplicemente riprendere l attività. Deve quindi essere ricreato l oggetto Activity se l utente vuole riprendere tale esecuzione. Tuttavia l utente è ignaro di tale distruzione e si aspetta l attività così com era. In questa situazione per preservare l attività è possibile implementare un metodo di callback che permette di salvare le informazioni relative all attività in questione: onsaveistancestate(). Fig. 03 Salvataggio istanza Il salvataggio dell attività permette dunque qualora l attività arrestata o in pausa viene distrutta mediante il metodo onrestoreistancestate() permette di rilanciare l attività, ripristinando lo stato dell attività Service Un servizio è un ulteriore application component che può eseguire operazioni lunghe in background e non prevede un interfaccia utente. Un altro componente può iniziare un servizio e continuerà ad eseguire in background anche se l utente cambia applicazione. Un componente può legarsi ad un servizio per interagire con esso ed eseguire un Inter Process Communication (IPC). Un servizio esiste in due forme: 1. Started: un servizio è avviato, quando un componente, come un attività, invoca startservice(). Una volta avviato, un servizio può eseguire nel background a tempo indeterminato, anche se il componente è stato distrutto. Un servizio started nel momento in cui compie un operazione non ritorna alcun risultato al componente chiamante. Ad esempio un operazione di download dalla rete. 2. Bound: un servizio è legato, quando un application component è legato dalla chiamata bindservice(). Un servizio bound offre un interfaccia client-server che permette ai componenti di interagire con il servizio, mandando richieste, ricevendo risultati, anche facendolo tramite i processi grazie all aiuto dell IPC. Questo esegue solo quando è legato a un altro componente. Più componenti possono legarsi al servizio, ma quando vengono slegati, il servizio viene distrutto. 11

12 Pur se i due servizi vengono trattati in maniera separata, il servizio funziona in entrambi i modi. Si chiama un servizio started con onstartcommand() quello bounded con onbind(). Indipendentemente da come viene definito il servizio, qualsiasi applicazione può iniziare un servizio (anche in applicazioni separate) come si inizia un attività: tramite un Intent. L unica attenzione che bisogna fare è che un servizio viene eseguito nel thread principale del processo ospitante, non bisogna creare un proprio thread e non viene lanciato in un processo separato. Per creare un servizio bisogna richiamare la sottoclasse Service. [7] Nell implementazione bisogna ridefinire alcuni metodi di callback, necessari per il ciclo di vita del servizio: - onstartcommand(): metodo che richiede che un servizio venga inizializzato come started attraverso startservice(), e sia lanciato nel background indefinitamente. Legato a tale metodo ci saranno quelli per arrestare il servizio tramite o stopself() o stopservice(). - onbind(): metodo utilizzato per legare un componente ad un servizio tramite la chiamata bindservice(). Nell implementazione bisogna provvedere un interfaccia che i clienti usano per comunicare con il servizio. - oncreate(): metodo usato quando il servizio è stato appena creato, esegue una procedura una sola volta. Se il servizio è già in esecuzione, tale metodo non viene chiamato. - ondestroy(): metodo chiamato quando il servizio non è più utilizzato ed è stato distrutto. Viene implementato per ripulire le risorse come: thread, ricevitori, ecc. Il sistema Android sarà forzato ad interrompere un servizio solo quando la memoria è insufficiente e deve recuperare le risorse di sistema. Se il servizio è legato all'attività in primo piano dell'utente, le probabilità venga ucciso sono molto basse. In caso contrario, se il servizio è started, il sistema ridurrà la sua posizione nella lista dei task in background nel corso del tempo in modo da diventare sensibile all'uccisione. Bisogna quindi gestire una modalità di corretto riavvio da parte del sistema. In modo che sia il sistema a riavviare il servizio qualora le risorse diventino di nuovo disponibili. Per quanto riguarda invece la gestione del ciclo di vita di un servizio possiamo individuare come nel caso delle attività vengono definite i metodi di callback che verranno monitorati attraverso due cicli annidati: Entire Lifetime : contenuta nell intervallo di tempo tra i metodi oncreate() e ondestroy(). Questi vengono chiamati per tutti i servizi, se sono stati creati da startservice() o bindservice(). Active Lifetime : tale intervallo di tempo inizia dalle chiamate onstartcommand() o onbind(), a tali metodi è consegnato l Intent che è stato fornito dai rispettivi metodi startservice() o bindservice(). La durata finale di questo intervallo dipende dal servizio: se si tratta di uno started il termine coincide con l intero Lifetime altrimenti se è bound il termine coincide con la chiamata del metodo onunbind(). 12

13 Fig. 04 Lifetime di un servizio started (sinistra) e bound (destra) Un ultimo aspetto riguarda i servizi foreground, considerati come dei particolari servizi utilizzati correntemente dall utente e per questo non candidati ad essere uccisi dal sistema quando c è poca memoria. Un Foreground Service deve prevedere una notifica per la status bar, il che significa che la notifica non può essere respinta a meno che il servizio non sia stato arrestato o rimosso dal foreground Content Provider Content Providers gestiscono l accesso ad un insieme strutturato di dati. Prevedono un incapsulamento del dato e forniscono dei meccanismi per la definizione della data security. Pertanto sono delle interfacce standard che collegano i dati in un processo, con il codice che esegue in un altro processo. Quando bisogna eseguire l accesso ai dati in un content provider, si utilizza un particolare oggetto nel contesto dell applicazione detto ContentResolver, che permette la comunicazione usando il provider come un client. L oggetto ContentResolver comunica con un ulteriore oggetto detto Provider, implementato dalla classe ContentProvider. Questo oggetto riceve i dati richiesti dal cliente, per eseguire le operazioni richieste, ritornando il risultato. Non è necessario sviluppare un proprio provider, se non si intende condividere dati con altre applicazioni. Bisogna, tuttavia, implementarlo quando è necessario copiare e incollare dati complessi o file da un applicazione ad un altra. Android include un content provider per la gestione dei dati: audio, video, immagini e informazioni personali. Tale documentazione è fornita dal pacchetto <android.provider>, che anche se con alcune restrizioni, tali provider sono accessibili da qualsiasi applicazione Android. 1. Content Provider di Base: Fornisce informazioni sull accesso ai dati in un content provider quando i dati sono organizzati in tabelle. Fornisce un insieme di procedure di tipo IPC e per l accesso sicuro ai dati. 13

14 2. Creazione di un Content Provider: Implementiamo un provider come una o più classi all interno di un applicazione Android. Una delle classi implementa una sotto classe ContentProvider che è il ponte tra il provider e le altre applicazioni. Questi sono significativi per dare la disponibilità dei dati ad altre applicazioni che con le proprie attività permettono all utente di interrogare e modificare i dati organizzati dal provider. 3. Calendar Provider: Il Calendar Provider è un deposito per gli eventi del calendario dell utente. Vengono fornite una serie di API per l esecuzione di: ricerche, inserimenti, modifiche e cancellazioni su tale calendari. Tali API possono essere usate dall applicazione e dai sync adapters, ovviamente la gestione e le regole dipendono dal tipo di programma sta eseguendo la chiamata Intent La maggior parte dei componenti di un applicazione vengono attivati da un messaggio, detto Intent. L oggetto intent è una struttura dati passiva che possiede al suo interno una descrizione astratta dell operazione che deve eseguire o nel caso delle trasmissioni una descrizione di qualcosa che deve ed è stato annunciato. Vengono divisi in due gruppi fondamentali: 1. Explicit Intents: viene inserito nel campo destinazione il nome della componente. Poiché i nomi delle altre componenti non sono noti agli sviluppatori di altre applicazioni, questo tipo di messaggi vengono utilizzati nelle applicazioni interne. 2. Implicit Intent: nel campo destinazione non viene inserito il nome della componente. Questo modello di messaggi viene utilizzato per avviare nuove componenti in altre applicazioni. Nel caso dell esplicito, Android, gestisce facilmente la situazione fornendo il nome della classe con cui lavorare. Tuttavia bisogna trovare un ottima soluzione anche nel caso degli intent impliciti. Poiché sono in assenza di un obiettivo disegnato, il sistema Android deve trovare la migliore componente in grado di gestire l intent. Questo per tanto viene gestito confrontando il contenuto dell oggetto Intent con dei filtri di Intent, strutture associate ai componenti in grado di ricevere intent. Tali filtri pubblicizzano le capacità di un componente e delimitano gli intent che può gestire. Qualora il componente ha i filtri di Intenti può ricevere intenti espliciti e impliciti, se non li ha può ricevere solo intenti espliciti. 1.3 Gestione dei Processi e dei Threads Quando un componente d applicazione parte e non ci sono altri componenti in esecuzione, il sistema Android fa partire un nuovo processo Linux per l applicazione con un singolo thread di esecuzione chiamato main thread. Di default, tutte le componenti della stessa applicazione sono in esecuzione nello stesso processo e thread. Se un componente invece parte e ci sono già altri processi per l applicazione, allora il componente viene avviato all interno di tale processo ed utilizza lo stesso thread di esecuzione. Comunque, è possibile avviare differenti componenti in separati processi, ed è possibile creare dei thread aggiuntivi per ogni processo. Processi: 14

15 Di default, tutti i componenti della stessa applicazione eseguono nello stesso processo e molte applicazioni non dovrebbero cambiare tale comportamento. Tuttavia si può cambiare il comportamento modificandolo tramite il manifesto. Il manifesto supporta un attributo android:process che può specificare in quale componenti esegue il processo. Si può modificare questo attributo in modo tale da poter avere componenti che eseguono nel proprio processo o componenti che condividono lo stesso processo oppure far in modo che una differente applicazione esegua nello stesso processo (sempre che si condivida lo stesso Linux user ID e siano identificati con gli stessi certificati). Android può decidere di arrestare il processo ad un certo punto: ad esempio quando la memoria è bassa ed è richiesta da altri processi che stanno servendo l utente. Il componente al suo interno viene ucciso e distrutto. Un processo è avviato qualora ci sia la necessità di lavoro per lui. La decisione del processo da uccidere viene scelta (attraverso una serie di regole) dal sistema Android, che pesa la loro importanza relativa all utente, la decisione dipende quindi dallo stato di funzionamento dei componenti in tale processo. Ciclo di vita dei Processi: Il sistema Android prova a mantenere un processo per molto tempo, fino al momento in cui bisogna rimuovere un vecchio processo per recuperare memoria per un processo nuovo o uno più importante. Il sistema gestisce quindi una gerarchia di importanza, per il rimpiazzamento dei processi, basata sulle componenti in esecuzioni nel processo e lo stato dei componenti. I processi con meno importanza vengono eliminati per prima, poi quelli successivi a quelli a minore importanza, fino a risanare le risorse di sistema. Esistono cinque livelli di gerarchia di importanza (il primo è quello più importante, ucciso per ultimo): 1. Processo Foreground : E necessario per ciò che sta facendo l utente. E di primo piano se valgono determinate condizioni: - Ospita un attività con cui l utente sta interagendo. - Ospita un servizio legato ad un attività con cui l utente sta interagendo. - Ospita un servizio in primo piano che è in esecuzione. - Ospita un servizio che sta eseguendo uno dei suoi callback del lifecycle. In generale, esistono pochi processi foreground. Questi vengono uccisi in ultima istanza, se la memoria è così bassa che non possono continuare a funzionare. In tale punto, il dispositivo ha raggiunto uno stato di paginazione della memoria, in cui è necessario uccidere dei processi in primo piano per mantenere l interfaccia utente reattiva. 2. Processo Visible : Non ha componenti in primo piano, ma è in grado di influenzare ciò che vede l utente sullo schermo. Un processo visibile se valgono determinate condizioni: - Ospita un attività che non è in primo piano, ma è visibile dall utente. - Ospita un servizio legato ad un attività visibile. Un processo visibile è estremamente necessario e non dovrebbe essere interrotto a meno che questo non sia necessario per mantenere in esecuzione i processi in primo piano. 3. Processo Service : Un processo che sta eseguendo un servizio che è stato avviato da startservice() e non rientra nelle categorie superiori è detto di servizio. Questi non sono direttamente legati a tutto ciò che l utente vede, fanno operazioni di cui di solito l utente ci tiene, quindi il sistema li tiene in vita a meno che non ci sia abbastanza memoria per tenerli insieme a quelli di primo piano e visibili. 15

16 4. Processo Background : Un Processo di sfondo è un processo che mantiene un attività che non è attualmente visibile all utente. Questo tipo di processo non ha alcun tipo di impatto diretto sulla user experience, ed il sistema può ucciderli in qualsiasi momento per recuperare la memoria per processi di primo piano, visibili o di servizio. Quando ci sono tanti processi di sfondo questi vengono mantenuti in una lista con gestione LRU (least recently used) in modo da assicurare che il processo con l attività più recentemente utilizzato dall utente è l ultimo ad essere ucciso. Se un processo implementa correttamente i metodi del ciclo di vita e salva il suo stato attuale, uccidendo il processo non avrà effetto visibile sull user experience, perché quando l utente si sposta all indietro con l attività, questa avrà ripristinato tutto il suo stato visibile. 5. Processo Empty : Un processo che non ha alcuna componente attiva è detto vuoto. L unica ragione per mantenere questo tipo di processo è a fini di caching, per migliorare i tempi di avvio la prossima volta che un componente deve essere eseguito in tale processo. Il sistema uccide spesso questi processi, in modo da bilanciare le risorse di sistema complessive tra le cache di processo e le cache del kernel sottostante. Android colloca un processo a più alto livello che può, in base all importanza delle componenti attive nel processo. Il posizionamento di un processo può aumentare a causa di altri processi che dipendono da esso, un processo dipendente da un altro non può essere classificato inferiore al processo a cui dipende. Perché un processo in esecuzione di un servizio è posto più in alto di un processo con attività in background, un attività che inizia una lunga operazione potrebbe fare bene per avviare un processo per tale operazione, piuttosto che creare un thread di lavoro: ad esempio un attività che deve caricare una foto su un sito web, avvia un servizio in background che possa continuare il caricamento anche se l utente lascia l attività. In questo modo ci sarà almeno un processo di servizio a priorità, indipendentemente dall attività. Thread: Quando un applicazione viene lanciata, il sistema crea un thread di esecuzione per l applicazione, chiamato main. Questo thread è importante, perché si occupa dell invio agli eventi dell interfaccia utente. Tale thread interagisce con le componenti dall Android UI toolkit : per questo il main thread viene chiamato il UI thread (User-Interface Thread). Il sistema non crea un thread separato per ogni componente. Tutti i componenti che eseguono nello stesso processo sono istanziati nell UI thread, e le system call ad ogni componente sono inviate da quel thread. Quando l applicazione svolge un lavoro intenso in risposta ad interazioni con l utente, questo singolo thread è un modello che produce scarse prestazioni, a meno che l applicazione non sia stata implementata bene. Quando il thread si blocca, non è possibile inviare alcun tipo di evento, quindi dal punto di vista dell utente l applicazione sembra bloccarsi. Ancora peggio è quando l UI thread si blocca per più di circa cinque secondi, viene ritornato il messaggio l applicazione non risponde (ANR) all utente, che mal contento può disinstallare l applicazione. 16

17 L Android UI toolkit non è thread-safe. [Thread-Safe: Nell ambito del multithreading, per indicare che una porzione di codice si comporta in modo corretto nel caso di esecuzioni multiple da parte di più thread. In particolare è possibile che i vari thread possono avere accesso alle informazioni condivise, ma queste sono accessibili solo da un thread alla volta]. [8] Non si deve manipolare l interfaccia utente da un thread di lavoro, bisogna eseguire la manipolazione dell interfaccia utente dall UI thread. Due sono le regole fondamentali: Non bloccare l UI thread. Non accedere all Android UI toolkit da fuori l UI thread. Worker Thread: A causa del modello a singolo thread, è necessario che valgano le due regole. Non bisogna far in modo che non si deve bloccare l UI thread. Se bisogna eseguire operazioni che non sono istantanee, è necessario assicurarsi che siano in thread separati (thread di background o worker ). La seconda regola è quella di non accedere all Android UI toolkit al di fuori del UI thread, se non si rispetta tale regola è possibile che si verificano eventi anomali e inaspettati, che possono richiedere molto tempo. Android, risolve tale problema, inserendo una lista di metodi che permettono l accesso all UI thread da altri thread: Activity.runOnUiThread(Runnable), View.post(Runnable), View.postDelayed(Runnable, long). Non appena la complessità dell operazione aumenta, questo tipo di codice diventa complicato e difficile da mantenere. Per gestire queste situazioni complesse con un thread lavoratore, è consigliato utilizzare un gestore nel proprio worker thread, per elaborare i messaggi consegnati dall UI thread. La migliore soluzione è quella di estendere la classe AsyncTask, che semplifica l esecuzione del worker thread, processi che necessitano l interazione con l interfaccia utente. AsyncTask consente di eseguire un lavoro asincrono sull interfaccia utente. Svolge il blocco di operazioni in un worker thread e pubblica i risulta sull UI thread, senza gestire thread o gestori di thread. Bisogna implementare la sottoclasse AsyncTask e il metodo di callback doinbackground(), eseguito in un pool di thread in background. Per aggiornare la UI in maniera sicura, bisogna implementare onpostexecute() che fornisce il risultato da doinbackground() ed esegue nel UI thread. Si può eseguire il task chiamando execute() dall UI thread. Richiamiamo delle proprietà di tale classe: - Si può specificare il tipo di parametri, i valori di progresso, i valori finali del task. - Il metodo doinbackground() esegue automaticamente in un worker thread. - onpreexecute(), onpostexecute() e onprogressupdate() sono invocato sull UI thread. - Il valore ritornato da doinbackgroun() è inviato da onpostexecute(). - Chiami publishprogress() per eseguire onprogressupdate() sull UI thread. - Si può cancellare il task in ogni momento, da qualsiasi thread. Metodi Thread-Safe: In alcune situazioni, i metodi implementati potrebbero essere chiamati da più di un thread, pertanto devono essere thread-safe. Questo è vero soprattutto per i metodi che possono essere chiamate in maniera remota. Quando una chiamata di un metodo implementato in un IBinder (interfaccia per un oggetto remoto) [9] originato nello stesso processo nel quale sta eseguendo, il metodo è eseguito nel thread del chiamante. Quando la chiamata ha origine in un altro processo, il metodo viene eseguito in un thread scelto da un pool di thread di cui il sistema mantiene nello stesso processo come l IBinder. 17

18 Poiché un servizio può avere più di un cliente, più di un pool di thread può impegnare lo stesso metodo IBinder nello stesso momento. I metodi IBinder devono essere implementati threadsafe. Analogamente un Content Provider può ricevere richieste di dati che hanno origine in altri processi. Se le classi ContentResolver e ContentProvider nascondono i dettagli di come l IPC è gestito, i metodi che rispondono a tali richieste sono chiamati da un pool di thread nel processo del content provider, non l UI thread per il processo. Dato che questi metodi possono essere chiamati da qualsiasi numero di thread contemporaneamente, anch essi devono essere thread-safe. Interprocess Communication: Android offre un meccanismo per IPC usando remote procedure calls (RPCs), nel quale un metodo viene chiamato da un attività o un ulteriore componente, ma eseguito in modalità remota, con qualsiasi risultato restituito al chiamante. Ciò comporta decomporre un metodo chiamato ed i suoi dati, ad un livello del sistema operativo che riesce a comprenderlo, trasmettendolo dal processo locale ed il suo spazio di indirizzamento fino al processo remoto ed il suo spazio di indirizzamento, infine la chiamata viene ricomposta e ricostruita. I valori restituiti vengono trasmessi nella direzione opposta. Android fornisce i meccanismi IPC per svolgere tali operazioni, in modo da definire e implementare l interfaccia RPC. Per eseguire IPC, l applicazione deve legarsi ad un servizio, tramite bindservice(). 18

19 Capitolo 2 Accelerometro su Android In questo capitolo verranno trattati i metodi di gestione dei sensori accelerometrici sul sistema Android. Con una prima introduzione dei meccanismi hardware dei sensori: in particolare quello di movimento, per poi entrare nel dettaglio dell accelerometro con le varie classi e API (Application Programming Interface) per la gestione di tali sensori. Il risultato verrà finalizzato con un esempio applicativo di una misurazione di un acquisizione accelerometrica e con una visualizzazione di tale acquisizione. Per quanto riguarda il linguaggio di programmazione utilizziamo Java, la piattaforma di sviluppo per Android sarà l SDK (Software Development Kit) con l ADT per eclipse. 2.1 Sensori su Android Molti dei dispositivi Android sono costruiti con dei sensori incorporati che misurano il movimento, orientamento e condizioni ambientale. Questi sono capaci di provvedere dati grezzi con alta fedeltà e precisione, e utili se bisogna monitorare la posizione, il movimento nelle tre dimensioni o le condizioni ambientali del congegno. Android provvede tre categorie di sensori: - Sensori di Movimento: questi sensori misurano la forza di accelerazione e la forza di rotazione lungo i tre assi. La categoria che include: accelerometro, sensori di gravità, giroscopio, sensori del vettore rotazionale. - Sensori Ambientali: questi sensori misurano le variazioni dei parametri ambientali: come la temperatura, pressione, illuminazione e umidità. La categoria include: termometro, barometro e fotometro. - Sensori di Posizione: questi sensori misurano la posizione fisica del dispositivo. Include magnetometri e sensori di orientamento. Il framework provvede un insieme di classi ed interfacce in grado di eseguire una varietà di processi legati ai sensori. Alcune operazioni standard sono: - Determinare quale sensore è disponibile. - Determinare le capacità individuale dei sensori, come: raggio massimo, requisiti di potenza e risoluzione. 19

20 - Acquisizioni di dati grezzi e definire il rate minimo a cui si acquisiscono i dati dei sensori. Il framework che Android offre per i sensori offre l accesso a numerosi tipi di sensori. Alcuni sono hardware-based ed altri software-based. Quelli hardware-based sono quelli con componenti fisici installati all interno del dispositivo, permettono la misurazione da un acquisizione diretta della grandezza fisica. (vedi accelerometro, ecc.) Quelli software-based sono quelli che non hanno strumenti di misura installati nel dispositivo, e per questo sono detti imitatori di sensori hardware-based. Loro derivano i loro dati da uno o più sensori hardware-based e sono detti sensori virtuali o sintetici. (vedi il sensore di accelerazione lineare) Tabella 01 Tipi di Sensori (con caratteristiche) supportati da Android Sensore Tipo Descrizione Uso Comune TYPE_ACCELEROMETER Hardware Misura la forza di Rivelamento di accelerazione in m/s 2 movimento TYPE_LIGHT Hardware Misura il livello di luminosità Regolazione in lx schermo TYPE_LINEAR_ACCELERATION Hardware / Misura la forza di Rivelamento di Software accelerazione in m/s 2 esclusa movimento la forza di gravità TYPE_ORIENTATION Software Misura il grado di rotazione del dispositivo. Usa due sensori (magnetometro, sensore di gravità) con il metodo getrotationmatrix() Rivelamento di posizione Per l acquisizione dei dati utilizziamo tali sensori nel framework. Il framework Android offre un pacchetto android.harware che include le seguenti classi e interfacce: - SensorManager: si usa tale classe per creare un istanza di un sensore di servizio. Tale classe prevede numerosi metodi per l accesso, ascolto dei sensori e acquisizione dei dati. Fornisce un insieme di costanti usate per fissare i tassi di acquisizione, calibrare i sensori e fornire l accuratezza dello strumento. - Sensor: si usa tale classe per creare un istanza di un sensore specifico, in particolare per utilizzare dei metodi per determinare la capacità del sensore. - SensorEvent: si usa tale classe per istanziare un oggetto sensor event, che prelevi informazioni dal sensore di eventi. Informazioni quali: dati grezzi, il tipo di sensore che ha generato l evento e l accuratezza dei dati. - SensorEventListener: si usa tale interfaccia per creare due metodi di callback che ricevono notifiche (sensore di eventi) quando cambia il valore o la precisione di un sensore. In una tipica applicazione si usano questi sensor-related APIs ad eseguire due processi base: 1. Identificazione dei sensori e delle loro capacità: Tale identificazione a runtime è utile se l applicazione ha caratteristiche di cui far affidamento su un particolare tipo di sensore o una capacità di un sensore. In questo modo si può scegliere un sensore di un dato tipo con la sua implementazione che ha le migliori prestazioni per l applicazione. 20

21 Per identificare il sensore di un dispositivo, bisogna realizzare un riferimento con il sensore di servizio. Creo un istanza del SensorManager chiamando il metodo getsystemservice() passandogli come argomento SENSOR_SERVICE della classe Context (superclasse di Activity). private SensorManager mysm = (SensorManager) getsystemservice(context.sensor_service); Per acquisire quello che si è ascoltato da ogni sensore usiamo il metodo getsensorlist() passandogli per argomento la costante TYPE_ALL o di un singolo sensore usando la costante predefinita. (Ad esempio uso TYPE_ACCELEROMETER per l accelerometro) List<Sensor> devicesensors = mysm.getsensorlist(sensor.type_all); Si può inoltre determinare se un dispositivo possiede un determinato sensore tramite il metodo getdefaultsensor() passandogli come argomento il tipo di sensore, la chiamata ritorna null quando non esiste il sensore specifico. private SensorManager mysm = (SensorManager) getsystemservice(context.sensor_service); if (mysm.getdefaultsensor(sensor.type_accelerometer)!= null ) { //Successo! Esiste il sensore. } else { //Fallimento! Non c è l accelerometro. } Usiamo i metodi pubblici della classe Sensor per determinare le capacità dei dispositivi. Utile per far in modo che l applicazione si comporti in maniera differente in base a quali sensori o capacità sono presenti sul dispositivo: ad esempio usiamo getresolution() o getmaximumrange() per ottenere la risoluzione e il raggio massimo di misura, getpower() per i requisiti di potenza dello strumento oppure usare getmindelay() utile perché fornisce il tasso massimo di acquisizione dei dati, il quale ritorna il minimo intervallo di tempo che un sensore ci impiega per rilevare i dati. 2. Monitoraggio dei sensori di eventi: Il monitoraggio fornisce il come vengono acquisiti i dati dei sensori, infatti un sensore rileva un cambiamento nei parametri della misurazione. Un sensore di evento fornisce: il nome del sensore che ha scatenato l evento, data e orario dell evento, la precisione dell evento e i dati non elaborati. I metodi forniti dall interfaccia SensorEventListener sono quelli utilizzati per monitorare: onsensorchanged() e onaccuracychanged(). Questo quando: Cambia la precisione di un sensore: il sistema invoca onaccuracychanged(), che fornisce un riferimento all oggetto Sensor che è cambiato e la nuova accuratezza del sensore: rappresentata da quattro costanti. (SENSOR_STATUS_ACCURACY_LOW, SENSOR_STATUS_ACCURACY_MEDIUM, SENSOR_STATUS_ACCURACY_HIGH, SENSOR_STATUS_UNRELIABLE) Un sensore riporta un nuovo valore: il sistema invoca onsensorchanged(), con un riferimento all oggetto SensorEvent e le informazioni legate a tale oggetto Sensori di Movimento (Accelerometro) La piattaforma Android prevede un insieme di sensori che rilevano il movimento del dispositivo. Due sono solo hardware-based come l accelerometro ed il giroscopio altri tre possono essere sia hardware-based o software-based come il sensore di gravità, di accelerazione lineare e del vettore di rotazione. Ad esempio i sensori software-based derivano 21

22 i dati da strumenti hardware come magnetometro o accelerometro mentre quelli hardware utilizzano degli strumenti di misura installati nell hardware del dispositivo. Tutti i dispositivi Android includono un accelerometro, mentre la disponibilità dei sensori software-based dipende da uno o più sensori hardware che deriva i loro dati. I sensori di movimento sono usati per monitorare il movimento come ad esempio l inclinazione, le vibrazioni, le oscillazioni. Il movimento è solitamente il riflesso di un ingresso diretto dell utente, in questo caso è relativa al frame di riferimento o del dispositivo o dell applicazione (come: il controllo di un pallone in un gioco). Oppure può essere il riflesso di un ambiente fisico in cui è posizionato il dispositivo, in tale caso è relativo al frame di riferimento del mondo considerato (come: movimento mentre si guida un automobile). Tali sensori solitamente vengono combinati con sensori di posizione, ad esempio il sensore di campo geomagnetico, per determinare la posizione relativa nel frame di riferimento del mondo (come nel caso di un applicazione di un navigatore satellitare che valuta la velocità relativa con cui sta viaggiando l autovettura o il tempo necessario per arrivare a destinazione con quella velocità). Tutti i sensori di movimento ritornano un array multi-dimensionale di valori per ogni SensorEvent rispettivo ai tre assi di coordinate di riferimento (x,y,z): come nel caso dell accelerometro. Tali dati sono ritornati all interno di un array di tipo float chiamato values. Tabella 02 vettore values nel caso dell accelerometro Sensor Dati SensorEvent Descrizione Unità di Misura SensorEvent.values[0] F accelerazione lungo x TYPE_ACCELEROMETER SensorEvent.values[1] F accelerazione lungo y m/s 2 SensorEvent.values[2] F accelerazione lungo z Utilizzo dell Accelerometro: Per poter utilizzare l accelerometro si usa tale codice: private SensorManager mysm = (SensorManager) getsystemservice(context.sensor_service); private Sensor mys = mysm.getsensordefault(sensor.type_accelerometer); Un sensore accelerometro rileva l accelerazione applicata al dispositivo (A d ), inclusa la forza di gravità, dalle misure della forze applicate al dispositivo (F s ) e valutandone la massa m : A d = - F s /m (2.1) Tale relazione tuttavia è influenzata dalla forza di gravità (g), che modifica l equazione in: A d = - g - F s /m (2.2) Per tale ragione si ottiene quando il dispositivo è fermo (e non accelera), l accelerometro legge tale grandezza pari a g = 9.81 m/s 2. In maniera duale si ha che quando il dispositivo che è in caduta libera verso il suolo ed ha un accelerazione reale di 9.81 m/s 2, l accelerometro leggerà un valore di 0 m/s 2. Per poter ottenere l accelerazione reale bisogna rimuovere la gravità dal valore acquisito dallo strumento di misura, tale soluzione si apporta utilizzando un filtro passa-alto. Per isolare il termine della gravità invece usiamo un filtro passa-basso. Ad esempio un applicazione può essere: public void onsensorchanged(sensorevent event) { final float alpha = 0.8; //usiamo 0.8 per semplice esempio //filtro passa basso per isolare la gravità (esempio sulla componente dell asse x) gravity[0] = alpha * gravity[0] + (1 alpha) * event.values[0]; //filtro passa alto per rimuovere la gravità (esempio sulla component dell asse x) linear_acceleration[0] = event.values[0] gravity[0]; 22

23 NB: alpha viene valutato come t / (t + dt) dove t è la costante temporale del filtro passa-basso e corrisponde alla latenza che il filtro aggiunge al sensore di eventi, mentre dt è il tasso di consegna dell evento. Questo è un metodo, tuttavia ne esistono altre tecniche per il filtraggio. Gli accelerometri come altri sensori usano lo standard del sistema di coordinate. Tale risultato viene proposto quando il dispositivo è fermo su di un tavolo nel suo naturale orientamento: Se si spinge il dispositivo da sinistra (quindi si sposta verso destra), la A x > 0. Se si spinge il dispositivo dal basso (quindi si muove verso l alto), la A y > 0. Se si spinge verso il cielo con accelerazione A m/s 2, la A z = A , la quale corrisponde a quella del dispositivo (+A m/s 2 ) meno quella della forza di gravità (-9.81 m/s 2 ). In stato di quiete l accelerazione è A d = m/s 2, poiché A=0 m/s 2 quindi sarà meno quella di gravità. Questo sensore è utile poiché non solo rileva il movimento, ma utilizza una potenza dieci volte inferiore a quella usata da altri sensori. Un aspetto negativo è quello di dover implementare filtri passa-alto e passa-basso per eliminare la forza di gravità o ridurre il rumore. Un sensore simile a quello dell accelerometro è quello dell accelerazione lineare, che semplifica il problema dell introduzione dei filtri passa-alto / passa-basso escludendo l accelerazione di gravità. Infatti la relazione sarà: accelerazione lineare = accelerazione accelerazione di gravità (2.3) Tale sensore tuttavia ha un offset, che bisogna rimuovere. Il modo più semplice per rimuoverlo è quello di creare una fase di calibrazione nell applicazione, così che durante tale fase si richiede di fissare il dispositivo sul tavolo per leggere gli offset lungo i tre assi. Così da sottrarre al dato acquisito il valore dell offset. 2.2 Classi e API dell Accelerometro Il pacchetto android.hardware [10] prevede un insieme di classi e interfacce per la gestione dei sensori compresi nei dispositivi Android. Prevede due Interfacce: 1. SensorEventListener. 2. SensorListener. Le classi fondamentali sono: 1. Sensor 2. SensorEvent 3. SensorManager Classi Sensor: Fig. 05 Sistema Coordinate 23

24 Tale classe prevede una lista di costanti di tipo intero che vengono associati al tipo di sensore che si vuole utilizzare. Tale lista viene usata dal metodo, implementato nella classe SensorManager, getsensorlist(int) che preleva la lista dei sensori disponibili. In tale lista troviamo anche la costante che descrive l accelerometro: int TYPE_ACCELEROMETER il valore di tale costante è 1 (0x ). Tale classe provvede anche ad una lista di metodi public per operare con tali sensori: Tipo Metodo Descrizione float getmaximiumrange() portata massima del sensore. String getname() ritorna nome del sensore. float getpower() potenza in ma erogata dal sensore. float getresolution() risoluzione del sensore nell unità del sensore. int getmindelay() minimo ritardo permesso tra due eventi. int gettype() ritorna il tipo generico del sensore. int getversion() versione del modulo sensore SensorManager: La classe SensorManager permette l accesso ai sensori del dispositivo. Questo è permesso dopo aver utilizzato la chiamata getsystemservice(sensor_service). Di solito conviene al termine delle operazioni o quando l attività è in pausa disabilitare i sensori di cui non si ha bisogno, in modo da preservare batteria, poiché non vengono disabilitati in automatico quando si spegne lo schermo. Tale classe prevede un insieme di costanti e metodi di cui alcuni di questi sono obsoleti e aggiornati sempre in questa classe o nelle altre tre. I metodi che sono più importanti sono: public Sensor getdefaultsensor(int): uso tale metodo per ottenere un sensore di default dato un certo tipo. Il sensore di uscita può essere anche di tipo composto e i suoi dati possono essere filtrati. L argomento è il tipo del sensore. public List<Sensor> getsensorlist(int): uso tale metodo per avere una lista di sensori disponibili. L argomento è il tipo del sensore. public boolean registlistener(sensoreventlistener, Sensor, int, Handler): di tale metodo esiste anche quello senza l argomento Handler. Lo usiamo per registrare un particolare SensorEventListener in base ad un dato sensore. Ritorna vero se la chiamata ha avuto buon termine. Gli argomenti di questa chiamata sono: - SensorEventListener: oggetto di questa classe. - Sensor: sensore da registrare. - int: il rate con cui vengono consegnati i sensori di eventi. Gli eventi possono essere ritardati o velocizzati a seconda dello specifico rate (SENSOR_DELAY_ unito a NORMAL, UI, GAME o FASTER) tali costanti sono presenti tra i membri pubblici della classe SensorManager. - Handler: il gestore con cui vengono consegnati i sensori di eventi. public void unregisterlistener(sensoreventlistener, Sensor): annulla la registrazione del SensorEventListener in base al dato sensore. Gli argomenti sono l oggetto del SensorEventListener e di Sensor. Esiste una versione alternativa che permette di annullare la registrazione di tutti i sensori, omettendo l argomento Sensor. SensorEvent: La classe, rappresenta un sensore di evento, è legata ai valori generati da SensorEventListener e sono incapsulate all interno di SensorEvent. Tale classe non ha metodi ma solo membri ad 24

25 accesso public. Utilizza la definizione del sistema di coordinate usato dal SensorEvent API. Riportiamo nella seguente tabella la lista dei membri contenuti nella classe: Tipo Nome Descrizione int accuracy la precisione dell evento. Sensor sensor il sensore che genera l evento. long timestamp il tempo in cui è avvenuto l evento. (in nanosecondi) final float[] values la lunghezza dell array dipende dal sensore che si monitora. (pag 22) Interfacce SensorEventListener: Viene usato per ricevere delle notifiche dal SensorManager quando i valori del sensore cambiano. L approccio è asincrono, ci registriamo attraverso un listener ed in base ad un delay preimpostato riceviamo le notifiche. L implementazione del listener avviene tramite tale interfaccia. Al suo interno ci sono due metodi con modalità di accesso public : - abstract void onaccuracychanged(sensor, int): viene chiamato quando cambia la precisione del dispositivo, il parametro int corrisponde alla nuova accuratezza del dispositivo. - abstract void onsensorchanged(sensorevent event): viene chiamato quando cambiano i valori di un sensore. L argomento è l oggetto event che viene passato come parametro nonostante non lo si possa mantenere, molte volte può far parte di un pool interno ed essere riusato dal framework. SensorListener: Questa interfaccia è molto simile a quella di SensorEventListener con alcune modifiche nei parametri delle funzioni usate, tuttavia è obsoleto rispetto a l altra interfaccia, pertanto non viene utilizzata. 2.3 Esempio Applicativo Proviamo a valutare un esempio applicativo, riguardante l acquisizione e la visualizzazione dei dati dovuti alla misurazione da parte dei sensori accelerometrici. Per lo sviluppo dell applicazione uso l ambiente di programmazione di Eclipse con l Android Development Tools. Da eclipse creo un progetto New > Project > Android per avere uno spazio di lavoro per lo sviluppo dell applicazione. In questo framework vediamo che l applicazione è divisa in due sottocartelle fondamentali src e res : la prima contenente il codice sorgente in.java del programma, il secondo contenente le risorse che verranno usate durante l esecuzione. Creiamo quindi un attività di test di questi sensori, la visualizzazione dei dati acquisiti avverrà grazie l'ausilio della classe TextView fissando i dati con settext() e mostrati a video tramite il layout che viene gestito con un file.xml interno alla cartella res detto main.xml : nel suo interno ritroviamo un insieme di tag xml che corrispondono ad un ID del layout nel programma così da rendere semplice l identificazione mediante la chiamata findviewbyid(). Una volta inclusi i pacchetti necessari, definiamo la classe TestAccelerometerSensor come estensione di un Activity, nella seguente maniera: 25

26 I membri privati corrispondono a delle istanze che verranno spesso richiamate nel corso del programma. package test.accelerometer.sensor; import java.util.list; import android.app.activity; import android.os.bundle; import android.content.context; import android.widget.textview; //pacchetti per i sensori import android.hardware.sensor; import android.hardware.sensorevent; import android.hardware.sensormanager; import android.hardware.sensoreventlistener; public class TestAccelerometerSensorActivity extends Activity { private SensorManager gestore; private List<Sensor> accelerometri; private TextView finestra; private TableLayout public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); finestra = (TextView)findViewById(R.id.firstacquisizione); TextView accelerometer = (TextView)findViewById(R.id.presenza); TextView nome = (TextView)findViewById(R.id.nome); datix = (TextView)findViewById(R.id.datiX); datiy = (TextView)findViewById(R.id.datiY); datiz = (TextView)findViewById(R.id.datiZ); finestra.settext("acquisizione Misure"); gestore = (SensorManager) getsystemservice(context.sensor_service); accelerometri = gestore.getsensorlist(sensor.type_accelerometer); if ((accelerometri.size())!= 0 && (accelerometri)!= null) { accelerometer.settext("\naccelerometro acquisito correttamente.\n"); for (Sensor accelerometro : accelerometri) { accelerometro = gestore.getdefaultsensor(sensor.type_accelerometer); nome.settext(accelerometro.getname()); gestore.registerlistener(accelerometerlistener, accelerometro, SensorManager.SENSOR_DELAY_FASTEST); } } else { accelerometer.settext("\naccelerometro non disponibile sul dispositivo.\n"); return; } } 26

27 @Override protected void onresume() { super.onresume(); Sensor accelerometro = gestore.getdefaultsensor(sensor.type_accelerometer); gestore.registerlistener(accelerometerlistener, accelerometro, SensorManager.SENSOR_DELAY_NORMAL); protected void onpause() { super.onpause(); gestore.unregisterlistener(accelerometerlistener); protected void ondestroy() { super.ondestroy(); gestore.unregisterlistener(accelerometerlistener); } SensorEventListener accelerometerlistener = new SensorEventListener() public void onaccuracychanged(sensor A,int accuracy) { public void onsensorchanged(sensorevent event) { float[] v = new float[3]; v[0] = event.values[0]; v[1] = event.values[1]; v[2] = event.values[2]; datix.settext("x :"+v[0]); datiy.settext("y :"+v[1]); datiz.settext("z :"+v[2]); } }; } Bisogna effettuare la ridefinizione dei metodi di callback. Ovviamente potremmo utilizzare anche solo oncreate(), questo però apporterebbe dei problemi, specialmente quando il dispositivo viene spento o messo in stand-by, provocando il blocco dell applicazione. All interno di onresume() avremo la registrazione del listener, mentre l annullamento della registrazione all interno di ondestroy() e onpause(). oncreate() è la prima chiamata che l applicazione chiamerà: per questo motivo al suo interno ci sono anche le acquisizioni dei sensori. (con sistema di controllo nel caso non dovessero essere presenti gli accelerometri nel dispositivo) Infine bisogna implementare il Listener dall interfaccia SensorEventListener: ridefinendo anche qui le chiamate onsensorchanged() e onaccuracychanged(). Solo la prima chiamata inciderà sull acquisizione dei dati, pertanto è necessario effettuarne l Override. 27

28 Il for (sensore : lista) è un particolare tipo di costrutto detto ciclo for-each usato quindi per scorrere l intera lista. L ultima trattazione sarà il file xml che produce il layout: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout> Il risultato finale sarà: Fig 06 Snapshot Applicazione (SDK Android 4.0.3) 28

29 Conclusioni In definitiva tali applicazioni sono tuttora in via di sviluppo, con il continuare del tempo avremo sempre più affidabilità e raffinamento dei dati che vengono acquisiti dal dispositivo. Come abbiamo visto anche lo sviluppo delle classi e delle interfacce che permettono di controllare i dati che vengono acquisiti, vengono sempre aggiornate, lasciando indietro quei metodi e/o membri obsoleti. Tale risultato viene considerato ottimo per gli sviluppatori, grazie ad un ottimo ambiente di sviluppo, sempre in aggiornamento. Come il riferimento developer.android.com contente numerose guide, tutorial su riferimenti (quali pacchetti utilizzati da Android contenenti classi e interfacce utilizzate per l implementazione delle applicazioni dei dispositivi). Risorse contenute all interno dell SDK, quali esempi di programmazione di applicazioni su piattaforma Android. Guide sull istallazione dell SDK, ambiente di sviluppo e di interfacciamento di un applicazione direttamente sul proprio personal computer. [11] Non ci resta altro che aspettare le novità che ci riserverà questo sistema operativo che continua la sua crescita verso un mondo, quello degli smartphone, che rimane il fulcro delle nostre odierne vite per le utilità offerte. Ad esempio Android 4.0v fornisce il miglioramento dei sensori in ambienti ospedalieri, abitazioni, centri di fitness e altro ancora. [12] Concludo questo elaborato con dei ringraziamenti ai lettori, sperando che anche voi siate rimasti affascinati e colpiti dal potenziale di tali dispositivi. 29

30 Bibliografia [1] apple.com/iphone/features/ «Apple Iphone Smartphone» [2] samsung.com/global/microsite/galaxys2/html/index.html «Galaxy Specifiche» [3] biolab.uniroma3.it/materials/marani_ita.pdf «Applicazioni Mediche» [4] rcbsrl.it/servizi/rilievi-strumentali/valutazione-esposizione-alle-vibrazioni/ «Ulteriori Applicazioni Mediche» [5] fim.enea.it/organizzazione/fim-mat-qual/misure-accelerometriche «Strumentazione Sensori Sismici» [6] developer.android.com/reference/android/app/activity.html «Classe Activity» [7] developer.android.com/reference/android/app/service.html «Classe Service» [8] docs.oracle.com/cd/e / /6je9h033e/index.html «Thread-Safe» [9] developer.android.com/reference/android/os/ibinder.html «Interfaccia IBinder» [10] developer.android.com/reference/android/hardware/package-summary.html «Package Hardware» [11] developer.android.com/ «Sviluppo App. Android» [12] android.com/ «Piattaforma Android» 30

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

Il Concetto di Processo

Il Concetto di Processo Processi e Thread Il Concetto di Processo Il processo è un programma in esecuzione. È l unità di esecuzione all interno del S.O. Solitamente, l esecuzione di un processo è sequenziale (le istruzioni vengono

Dettagli

Inter Process Communication. Laboratorio Software 2008-2009 C. Brandolese

Inter Process Communication. Laboratorio Software 2008-2009 C. Brandolese Inter Process Communication Laboratorio Software 2008-2009 C. Brandolese Introduzione Più processi o thread Concorrono alla relaizzazione di una funzione applicativa Devono poter realizzare Sincronizzazione

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

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

Progetto Didattico di Informatica Multimediale

Progetto Didattico di Informatica Multimediale Progetto Didattico di Informatica Multimediale VRAI - Vision, Robotics and Artificial Intelligence 20 aprile 2015 Rev. 18+ Introduzione Le videocamere di riconoscimento sono strumenti sempre più utilizzati

Dettagli

Estensione di un servizo di messaggistica per telefonia mobile (per una società di agenti TuCSoN)

Estensione di un servizo di messaggistica per telefonia mobile (per una società di agenti TuCSoN) Estensione di un servizo di messaggistica per telefonia mobile (per una società di agenti TuCSoN) System Overview di Mattia Bargellini 1 CAPITOLO 1 1.1 Introduzione Il seguente progetto intende estendere

Dettagli

Guida. Vista Live. Controllo. Riproduzione su 24 ore. Ricerca avanz. Le icone includono: Mod. uscita. Icona. Un sensore di allarme.

Guida. Vista Live. Controllo. Riproduzione su 24 ore. Ricerca avanz. Le icone includono: Mod. uscita. Icona. Un sensore di allarme. Guida operatore del registratore TruVision Vista Live Sull immagine live dello schermo vengono visualizzati laa data e l ora corrente, il nome della telecamera e viene indicato se è in corso la registrazione.

Dettagli

Abstract Data Type (ADT)

Abstract Data Type (ADT) Abstract Data Type Pag. 1/10 Abstract Data Type (ADT) Iniziamo la nostra trattazione presentando una nozione che ci accompagnerà lungo l intero corso di Laboratorio Algoritmi e Strutture Dati: il Tipo

Dettagli

Introduzione alle applicazioni di rete

Introduzione alle applicazioni di rete Introduzione alle applicazioni di rete Definizioni base Modelli client-server e peer-to-peer Socket API Scelta del tipo di servizio Indirizzamento dei processi Identificazione di un servizio Concorrenza

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

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

Carica i tuoi contenuti. Notizie Feed RSS Feed Multipli. Collegamento al tuo Sito Web

Carica i tuoi contenuti. Notizie Feed RSS Feed Multipli. Collegamento al tuo Sito Web Formule a confronto Carica i tuoi contenuti Puoi inserire immagini, creare le tue liste, i tuoi eventi. Gestire il tuo blog e modificare quando e quante volte vuoi tutto ciò che carichi. Notizie Feed RSS

Dettagli

Il portafoglio VidyoConferencing. Tutto ciò di cui avete bisogno per realizzare videoconferenze HD di qualità, accessibili e a costi vantaggiosi

Il portafoglio VidyoConferencing. Tutto ciò di cui avete bisogno per realizzare videoconferenze HD di qualità, accessibili e a costi vantaggiosi Il portafoglio VidyoConferencing Tutto ciò di cui avete bisogno per realizzare videoconferenze HD di qualità, accessibili e a costi vantaggiosi La qualità HD di Vidyo mi permette di vedere e ascoltare

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 del sistema 4 2.1 Requisiti hardware........................ 4 2.2 Requisiti software.........................

Dettagli

UML: Class Diagram. Ing. Orazio Tomarchio Orazio.Tomarchio@diit.unict.it

UML: Class Diagram. Ing. Orazio Tomarchio Orazio.Tomarchio@diit.unict.it UML: Class Diagram Ing. Orazio Tomarchio Orazio.Tomarchio@diit.unict.it Dipartimento di Ingegneria Informatica e delle Telecomunicazioni Università di Catania Class Diagram Forniscono una vista strutturale

Dettagli

Introduzione alla Programmazione ad Oggetti in C++

Introduzione alla Programmazione ad Oggetti in C++ Introduzione alla Programmazione ad Oggetti in C++ Lezione 1 Cosa è la Programmazione Orientata agli Oggetti Metodologia per costruire prodotti software di grosse dimensioni che siano affidabili e facilmente

Dettagli

Web Conferencing and Collaboration tool

Web Conferencing and Collaboration tool Web Conferencing and Collaboration tool La piattaforma Meetecho Piattaforma di Web Conferencing e Collaborazione on line in tempo reale Caratteristiche generali Soluzione client-server progettata per essere

Dettagli

Il manuale dell utente può essere scaricato dal sito gopro.com/support GUIDA DI RIFERIMENTO RAPIDO

Il manuale dell utente può essere scaricato dal sito gopro.com/support GUIDA DI RIFERIMENTO RAPIDO Il manuale dell utente può essere scaricato dal sito gopro.com/support GUIDA DI RIFERIMENTO RAPIDO / Benvenuto Quando si utilizza la videocamera GoPro nell ambito delle normali attività quotidiane, prestare

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

Sistemi di supporto alle decisioni Ing. Valerio Lacagnina

Sistemi di supporto alle decisioni Ing. Valerio Lacagnina Cosa è il DSS L elevato sviluppo dei personal computer, delle reti di calcolatori, dei sistemi database di grandi dimensioni, e la forte espansione di modelli basati sui calcolatori rappresentano gli sviluppi

Dettagli

Corso di Amministrazione di Sistema Parte I ITIL 3

Corso di Amministrazione di Sistema Parte I ITIL 3 Corso di Amministrazione di Sistema Parte I ITIL 3 Francesco Clabot Responsabile erogazione servizi tecnici 1 francesco.clabot@netcom-srl.it Fondamenti di ITIL per la Gestione dei Servizi Informatici Il

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

Le telecamere Installate verranno connesse ad Unità di elaborazione multiplexer per la gestione e la verifica di gruppi omogenei di 4-8-16-32-48-64

Le telecamere Installate verranno connesse ad Unità di elaborazione multiplexer per la gestione e la verifica di gruppi omogenei di 4-8-16-32-48-64 Le telecamere Installate verranno connesse ad Unità di elaborazione multiplexer per la gestione e la verifica di gruppi omogenei di 4-8-16-32-48-64 telecamere. I sistemi di acquisizione ed archiviazione

Dettagli

Serduino - SERRA CON ARDUINO

Serduino - SERRA CON ARDUINO Serduino - SERRA CON ARDUINO 1 Componenti Facchini Riccardo (responsabile parte hardware) Guglielmetti Andrea (responsabile parte software) Laurenti Lorenzo (progettazione hardware) Rigolli Andrea (reparto

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

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

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

12.5 UDP (User Datagram Protocol)

12.5 UDP (User Datagram Protocol) CAPITOLO 12. SUITE DI PROTOCOLLI TCP/IP 88 12.5 UDP (User Datagram Protocol) L UDP (User Datagram Protocol) é uno dei due protocolli del livello di trasporto. Come l IP, é un protocollo inaffidabile, che

Dettagli

La Valutazione Euristica

La Valutazione Euristica 1/38 E un metodo ispettivo di tipo discount effettuato da esperti di usabilità. Consiste nel valutare se una serie di principi di buona progettazione sono stati applicati correttamente. Si basa sull uso

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

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

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

Le funzionalità di un DBMS

Le funzionalità di un DBMS Le funzionalità di un DBMS Sistemi Informativi L-A Home Page del corso: http://www-db.deis.unibo.it/courses/sil-a/ Versione elettronica: DBMS.pdf Sistemi Informativi L-A DBMS: principali funzionalità Le

Dettagli

Corso di Programmazione ad Oggetti

Corso di Programmazione ad Oggetti Corso di Programmazione ad Oggetti Introduzione alla programmazione ad oggetti a.a. 2008/2009 Claudio De Stefano 1 La programmazione modulare Un programma può essere visto come un insieme di moduli che

Dettagli

UPPLEVA. 5 anni di GARANZIA. Soluzioni integrate di mobili, smart TV e sistema audio. Tutto in uno.

UPPLEVA. 5 anni di GARANZIA. Soluzioni integrate di mobili, smart TV e sistema audio. Tutto in uno. UPPLEVA Soluzioni integrate di mobili, smart TV e sistema audio. Tutto in uno. 5 anni di GARANZIA INCLUSA NEL PREZZO I televisori, i sistemi audio e gli occhiali 3D UPPLEVA sono garantiti 5 anni. Per saperne

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

SMS API. Documentazione Tecnica YouSMS SOAP API. YouSMS Evet Limited 2015 http://www.yousms.it

SMS API. Documentazione Tecnica YouSMS SOAP API. YouSMS Evet Limited 2015 http://www.yousms.it SMS API Documentazione Tecnica YouSMS SOAP API YouSMS Evet Limited 2015 http://www.yousms.it INDICE DEI CONTENUTI Introduzione... 2 Autenticazione & Sicurezza... 2 Username e Password... 2 Connessione

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

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

Gestione Email Gruppo RAS Carrozzerie Convenzionate

Gestione Email Gruppo RAS Carrozzerie Convenzionate Email Ras - CARROZZIERI Pag. 1 di 17 Gestione Email Gruppo RAS Carrozzerie Convenzionate Notizie Generali Email Ras - CARROZZIERI Pag. 2 di 17 1.1 Protocollo Gruppo RAS Questo opuscolo e riferito al Protocollo

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

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

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

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

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

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

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof.

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof. Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 009-10 prof. Viviana Bono Blocco 9 Metodi statici: passaggio parametri, variabili locali, record

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

Procedura per il ripristino dei certificati del dispositivo USB

Procedura per il ripristino dei certificati del dispositivo USB Procedura per il ripristino dei certificati del dispositivo USB 30/04/2013 Sommario - Limitazioni di responsabilità e uso del manuale... 3 1 Glossario... 3 2 Presentazione... 4 3 Quando procedere al ripristino

Dettagli

UML Component and Deployment diagram

UML Component and Deployment diagram UML Component and Deployment diagram Ing. Orazio Tomarchio Orazio.Tomarchio@diit.unict.it Dipartimento di Ingegneria Informatica e delle Telecomunicazioni Università di Catania I diagrammi UML Classificazione

Dettagli

Applicazione: Share - Sistema per la gestione strutturata di documenti

Applicazione: Share - Sistema per la gestione strutturata di documenti Riusabilità del software - Catalogo delle applicazioni: Gestione Documentale Applicazione: Share - Sistema per la gestione strutturata di documenti Amministrazione: Regione Piemonte - Direzione Innovazione,

Dettagli

Intalio. Leader nei Sistemi Open Source per il Business Process Management. Andrea Calcagno Amministratore Delegato

Intalio. Leader nei Sistemi Open Source per il Business Process Management. Andrea Calcagno Amministratore Delegato Intalio Convegno Open Source per la Pubblica Amministrazione Leader nei Sistemi Open Source per il Business Process Management Navacchio 4 Dicembre 2008 Andrea Calcagno Amministratore Delegato 20081129-1

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

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

Conferencing Services. Web Meeting. Quick Start Guide V4_IT

Conferencing Services. Web Meeting. Quick Start Guide V4_IT Web Meeting Quick Start Guide V4_IT Indice 1 INFORMAZIONI SUL PRODOTTO... 3 1.1 CONSIDERAZIONI GENERALI... 3 1.2 SISTEMI OPERATIVI SUPPORTATI E LINGUE... 3 1.3 CARATTERISTICHE... 3 2 PRENOTARE UNA CONFERENZA...

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

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

Guida ai Servizi Voce per il Referente. Guida ai Servizi Voce per il Referente

Guida ai Servizi Voce per il Referente. Guida ai Servizi Voce per il Referente Guida ai Servizi Voce per il Referente Guida ai Servizi Voce per il Referente 1 Sommario 1 Introduzione... 3 1.1 Accesso al Self Care Web di Rete Unica... 4 2 Servizi Aziendali... 6 2.1 Centralino - Numero

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

Web conferencing e collaborazione in tempo reale su Internet: la piattaforma Meetecho

Web conferencing e collaborazione in tempo reale su Internet: la piattaforma Meetecho Web conferencing e collaborazione in tempo reale su Internet: la piattaforma Meetecho Tobia Castaldi Alessandro Amirante Lorenzo Miniero Simon Pietro Romano Giorgio Ventre 02/10/2009 GARR 2009 "Network

Dettagli

AUL22: FactoryTalk View SE Scoprite i vantaggi chiave di una soluzione SCADA integrata

AUL22: FactoryTalk View SE Scoprite i vantaggi chiave di una soluzione SCADA integrata AUL22: FactoryTalk View SE Scoprite i vantaggi chiave di una soluzione SCADA integrata Giampiero Carboni Davide Travaglia David Board Rev 5058-CO900C Interfaccia operatore a livello di sito FactoryTalk

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

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

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

Inter-Process Communication

Inter-Process Communication Inter-Process Communication C. Baroglio a.a. 2002-2003 1 Introduzione In Unix i processi possono essere sincronizzati utilizzando strutture dati speciali, appartenti al pacchetto IPC (inter-process communication).

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

SAI QUANTO TEMPO IMPIEGHI A RINTRACCIARE UN DOCUMENTO, UN NUMERO DI TELEFONO O UNA E-MAIL?

SAI QUANTO TEMPO IMPIEGHI A RINTRACCIARE UN DOCUMENTO, UN NUMERO DI TELEFONO O UNA E-MAIL? archiviazione ottica, conservazione e il protocollo dei SAI QUANTO TEMPO IMPIEGHI A RINTRACCIARE UN DOCUMENTO, UN NUMERO DI TELEFONO O UNA E-MAIL? Il software Facile! BUSINESS Organizza l informazione

Dettagli

> MULTI TASKING > MULTI PROCESS > MULTI CORE

> MULTI TASKING > MULTI PROCESS > MULTI CORE > MULTI TASKING > MULTI PROCESS > MULTI CORE WorkNC V21 multicore 64 bits : Benefici di WorkNC Aumento generale della produttività, grazie alle nuove tecnologie multi-core, 64 bit e Windows 7 Calcolo di

Dettagli

ARP (Address Resolution Protocol)

ARP (Address Resolution Protocol) ARP (Address Resolution Protocol) Il routing Indirizzo IP della stazione mittente conosce: - il proprio indirizzo (IP e MAC) - la netmask (cioè la subnet) - l indirizzo IP del default gateway, il router

Dettagli

Corso SOL Gestione catalogo libro moderno 21-22 settembre 2009

Corso SOL Gestione catalogo libro moderno 21-22 settembre 2009 Corso SOL Gestione catalogo libro moderno 21-22 settembre 2009 Introduzione generale Autenticazione dell operatore https://sebina1.unife.it/sebinatest Al primo accesso ai servizi di Back Office, utilizzando

Dettagli

Tutorial Sky Go su Samsung v.1.1

Tutorial Sky Go su Samsung v.1.1 Tutorial Sky Go su Samsung v.1.1 1.1 Presentazione...2 2.2 Download e installazione...2 2.2 Login...3 2.2.1 Limitazioni all'accesso...4 2.3 Profili di visione...6 2.4 Reti...7 2.5 Diritti...7 3.0 Fruizione

Dettagli

Delorme InReach SE & Explorer Comunicatore Satellitare, l SOS nel palmo della tua mano

Delorme InReach SE & Explorer Comunicatore Satellitare, l SOS nel palmo della tua mano Delorme InReach SE & Explorer Comunicatore Satellitare, l SOS nel palmo della tua mano Guida Rapida caratteristiche 1. Introduzione InReach SE è il comunicatore satellitare che consente di digitare, inviare/ricevere

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

INFORMATIVA SUI COOKIE

INFORMATIVA SUI COOKIE INFORMATIVA SUI COOKIE I Cookie sono costituiti da porzioni di codice installate all'interno del browser che assistono il Titolare nell erogazione del servizio in base alle finalità descritte. Alcune delle

Dettagli

GUIDA RAPIDA emagister-agora Edizione BASIC

GUIDA RAPIDA emagister-agora Edizione BASIC GUIDA RAPIDA emagister-agora Edizione BASIC Introduzione a emagister-agora Interfaccia di emagister-agora Configurazione dell offerta didattica Richieste d informazioni Gestione delle richieste d informazioni

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

Business Process Modeling and Notation e WebML

Business Process Modeling and Notation e WebML Business Process Modeling and Notation e WebML 24 Introduzione I Web Service e BPMN sono standard de facto per l interoperabilità in rete a servizio delle imprese moderne I Web Service sono utilizzati

Dettagli

Il manuale dell utente può essere scaricato dal sito gopro.com/support GUIDA DI RIFERIMENTO RAPIDO

Il manuale dell utente può essere scaricato dal sito gopro.com/support GUIDA DI RIFERIMENTO RAPIDO Il manuale dell utente può essere scaricato dal sito gopro.com/support GUIDA DI RIFERIMENTO RAPIDO / Benvenuto Quando si utilizza la videocamera GoPro nell ambito delle normali attività quotidiane, prestare

Dettagli

Boot Camp Guida di installazione e configurazione

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

Dettagli

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

Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione Elementi di Informatica e Programmazione Le Reti di Calcolatori (parte 2) Corsi di Laurea in: Ingegneria Civile Ingegneria per l Ambiente e il Territorio Università degli Studi di Brescia Docente: Daniela

Dettagli

CWS32-H01 Soluzione Software Professionale per Monitoraggio & Telecontrollo Web

CWS32-H01 Soluzione Software Professionale per Monitoraggio & Telecontrollo Web CWS32-H01 Soluzione Software Professionale per Monitoraggio & Telecontrollo Web Attenzione!! Rif. Rev. 2.2 www.cws32.it Questa presentazione non sostituisce il manuale operativo del prodotto, in quanto

Dettagli

Informatica per la comunicazione" - lezione 9 -

Informatica per la comunicazione - lezione 9 - Informatica per la comunicazione" - lezione 9 - Protocolli di livello intermedio:" TCP/IP" IP: Internet Protocol" E il protocollo che viene seguito per trasmettere un pacchetto da un host a un altro, in

Dettagli

Esiste la versione per Linux di GeCo? Allo stato attuale non è prevista la distribuzione di una versione di GeCo per Linux.

Esiste la versione per Linux di GeCo? Allo stato attuale non è prevista la distribuzione di una versione di GeCo per Linux. FAQ su GeCo Qual è la differenza tra la versione di GeCo con installer e quella portabile?... 2 Esiste la versione per Linux di GeCo?... 2 Quali sono le credenziali di accesso a GeCo?... 2 Ho smarrito

Dettagli

www.leasys.com Marketing & Comunicazione Servizio di infomobilità e telediagnosi - 23/01/2014

www.leasys.com Marketing & Comunicazione Servizio di infomobilità e telediagnosi - 23/01/2014 Servizio di Infomobilità e Telediagnosi Indice 3 Leasys I Care: i Vantaggi dell Infomobilità I Servizi Report di Crash Recupero del veicolo rubato Blocco di avviamento del motore Crash management Piattaforma

Dettagli

Posta Elettronica Certificata

Posta Elettronica Certificata Posta Elettronica Certificata Manuale di utilizzo del servizio Webmail di Telecom Italia Trust Technologies Documento ad uso pubblico Pag. 1 di 33 Indice degli argomenti 1 INTRODUZIONE... 3 1.1 Obiettivi...

Dettagli

Privacy Policy del sito http://www.plastic-glass.com

Privacy Policy del sito http://www.plastic-glass.com Cos'è una PRIVACY POLICY Privacy Policy del sito http://www.plastic-glass.com Questo documento, concernente le politiche di riservatezza dei dati personali di chi gestisce il sito Internet http://www.plastic-glass.com

Dettagli

Inizializzazione degli Host. BOOTP e DHCP

Inizializzazione degli Host. BOOTP e DHCP BOOTP e DHCP a.a. 2002/03 Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/~auletta/ Università degli studi di Salerno Laurea e Diploma in Informatica 1 Inizializzazione degli Host Un

Dettagli

CHE COS È DOCFLY FATTURAZIONE PA... 3 1.1 IL GESTIONALE WEB... 3 1.2 ACCESSO ALL INTERFACCIA WEB... 4 1.3 FUNZIONALITÀ DELL INTERFACCIA WEB...

CHE COS È DOCFLY FATTURAZIONE PA... 3 1.1 IL GESTIONALE WEB... 3 1.2 ACCESSO ALL INTERFACCIA WEB... 4 1.3 FUNZIONALITÀ DELL INTERFACCIA WEB... 1. CHE COS È DOCFLY FATTURAZIONE PA... 3 1.1 IL GESTIONALE WEB... 3 1.2 ACCESSO ALL INTERFACCIA WEB... 4 1.3 FUNZIONALITÀ DELL INTERFACCIA WEB... 5 1.3.1 CREAZIONE GUIDATA DELLA FATTURA IN FORMATO XML

Dettagli

Neomobile incentra l infrastruttura IT su Microsoft ALM, arrivando a 40 nuovi rilasci a settimana

Neomobile incentra l infrastruttura IT su Microsoft ALM, arrivando a 40 nuovi rilasci a settimana Storie di successo Microsoft per le Imprese Scenario: Software e Development Settore: Servizi In collaborazione con Neomobile incentra l infrastruttura IT su Microsoft ALM, arrivando a 40 nuovi rilasci

Dettagli

2013 Skebby. Tutti i diritti riservati.

2013 Skebby. Tutti i diritti riservati. Disclaimer: "# $%&'(&)'%# *("# +,(-(&'(# *%$).(&'%#,/++,(-(&'/# 0"#.(1"0%# *(""20&3%,./40%&(# /# &%-',/# disposizione. Abbiamo fatto del nostro meglio per assicurare accuratezza e correttezza delle informazioni

Dettagli

Software Emeris Communication Manager

Software Emeris Communication Manager ecm Software Emeris Communication Manager Manuale operativo Fantini Cosmi S.p.A. Via dell Osio 6 20090 Caleppio di Settala MI Tel 02.956821 - Fax 02.95307006 e-mail: info@fantinicosmi.it http://www.fantinicosmi.it

Dettagli

Oscilloscopi serie WaveAce

Oscilloscopi serie WaveAce Oscilloscopi serie WaveAce 60 MHz 300 MHz Il collaudo facile, intelligente ed efficiente GLI STRUMENTI E LE FUNZIONI PER TUTTE LE TUE ESIGENZE DI COLLAUDO CARATTERISTICHE PRINCIPALI Banda analogica da

Dettagli

Data warehouse.stat Guida utente

Data warehouse.stat Guida utente Data warehouse.stat Guida utente Versione 3.0 Giugno 2013 1 Sommario INTRODUZIONE 3 I concetti principali 4 Organizzazione dei dati 4 Ricerca 5 Il browser 5 GUIDA UTENTE 6 Per iniziare 6 Selezione della

Dettagli

Dipartimento del Tesoro

Dipartimento del Tesoro Dipartimento del Tesoro POWER POINT AVANZATO Indice 1 PROGETTAZIONE DELL ASPETTO...3 1.2 VISUALIZZARE GLI SCHEMI...4 1.3 CONTROLLARE L ASPETTO DELLE DIAPOSITIVE CON GLI SCHEMI...5 1.4 SALVARE UN MODELLO...6

Dettagli

Controllare un nastro trasportatore fischertechnik con Arduino

Controllare un nastro trasportatore fischertechnik con Arduino TITOLO ESPERIENZA: Controllare un nastro trasportatore fischertechnik con Arduino PRODOTTI UTILIZZATI: OBIETTIVO: AUTORE: RINGRAZIAMENTI: Interfacciare e controllare un modello di nastro trasportatore

Dettagli

Cos è un protocollo? Ciao. Ciao 2:00. tempo. Un protocollo umano e un protocollo di reti di computer:

Cos è un protocollo? Ciao. Ciao 2:00. <file> tempo. Un protocollo umano e un protocollo di reti di computer: Cos è un protocollo? Un protocollo umano e un protocollo di reti di computer: Ciao Ciao Hai l ora? 2:00 tempo TCP connection request TCP connection reply. Get http://www.di.unito.it/index.htm Domanda:

Dettagli