La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Università degli Studi di Salerno Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica Daniele Cafaro 0622700020 Gianfranco Cerrato 0622700029.

Presentazioni simili


Presentazione sul tema: "Università degli Studi di Salerno Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica Daniele Cafaro 0622700020 Gianfranco Cerrato 0622700029."— Transcript della presentazione:

1 Università degli Studi di Salerno Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica Daniele Cafaro Gianfranco Cerrato Antonello De Stefano Anno Accademico 2010/2011 Sistemi Operativi Prof. Pierluigi Ritrovato Car Sharing Mobile v1.0 Android

2 Che cosè? Larchitettura I mattoni di base SDK & ADT Sicurezza e Permessi Certificate Permission URI Android Security Model Car Sharing Mobile Lapplicazione Larchitettura Il server REST Il client Lambiente di Test Conclusioni

3 Android è una piattaforma per dispositivi mobili che include il sistema operativo ed un vero e proprio stack di strumenti e librerie per la realizzazione di applicazioni mobili. Esso ha come obiettivo quello di fornire tutto ciò di cui un operatore, un vendor di dispositivi o uno sviluppatore hanno bisogno per raggiungere i propri obiettivi. Android ha la fondamentale caratteristica di essere open: è open in quanto utilizza, tecnologie open, prima fra tutte il kernel di Linux nella versione 2.6. è open in quanto utilizza librerie e API open

4 Android ha la fondamentale caratteristica di essere open: è open in quanto utilizza, tecnologie open, prima fra tutte il kernel di Linux nella versione 2.6. è open in quanto utilizza librerie e API open è open in quanto il suo codice è open source, consultabile da chiunque possa contribuire a migliorarlo, lo voglia documentare o semplicemente voglia scoprirne il funzionamento. Ideato da, oggi lo sviluppo, promozione e distribuzione del sistema sono a carico di a cui afferiscono i maggiori produttori di hardware e software, nonché gli operatori telefonici.

5 Android è basato su JAVA e fornisce un SDK in grado di facilitare lo sviluppo delle applicazioni. Android non esegue bytecode Java, per cui non ha bisogno di una JVM. Per ottimizzare al massimo lutilizzo delle risorse dei dispositivi, Google ha adottato una propria VM che prende il nome di Dalvik VM sviluppata inizialmente da Dan Bornstein. Si tratta di una VM ottimizzata per lesecuzione di applicazioni in dispositivi a risorse limitate la quale esegue codice contenuto allinterno di file di estensione.dex ottenuti a loro volta, in fase di building, a partire da file.class di bytecode Java.

6 Larchitettura di Android comprende tutto lo stack degli strumenti per la creazione di applicazioni mobili di ultima generazione, tra cui un sistema operativo, un insieme di librerie native per le funzionalità core della piattaforma, una implementazione della VM e un insieme di librerie Java. Architettura a layer, dove i livelli inferiori offrono servizi ai livelli superiori offrendo un più alto grado di astrazione. Android fornisce un set di applicazioni di base, che comprende un client, un programma SMS, calendario, mappe, browser, contatti e altro. Tutte le applicazioni sono scritte in linguaggio Java. Gli sviluppatori hanno pieno accesso alle stesse framework API usate dalle applicazioni di base. L'architettura delle applicazioni è progettata per semplificare il riutilizzo dei componenti; ogni applicazione può rendere pubbliche le sue capacità e tutte le altre applicazioni possono quindi farne uso (sono soggette ai limiti imposti dalla sicurezza del framework). Questo stesso meccanismo consente all'utente di sostituire i componenti standard con versioni personalizzate. Android comprende un set di librerie C/C++ usate da varie componenti del sistema di Android. Questi elementi sono presentati allo sviluppatore attraverso il framework per applicazioni di Android. Un set di librerie centrali che forniscono la maggior parte delle funzionalità disponibili nelle librerie di base del linguaggio di programmazione Java. Android si appoggia sulla versione 2.6 di Linux per servizi del sistema centrale come sicurezza, gestione della memoria, esecuzione, network stack, e driver model. Il kernel funziona anche da abstraction layer tra l'hardware e il resto del software.

7 Alla base di ogni applicazione si trova un set di servizi e sistemi, tra cui: Un gruppo ricco ed estensibile di View che possono essere usate per costruire un'applicazione; contiene liste, caselle di testo, pulsanti, e addirittura un browser web integrato Dei Content Providers che permettono alle applicazioni di accedere a dati da altre applicazioni (come i Contatti), o di condividere i propri dati Un Manager delle risorse, che offre l'accesso a risorse non-code come strings localizzate, grafica, files di layout Un Manager delle notifiche, che permette a tutte le applicazioni di mostrare avvisi personalizzati nella status bar Un Manager delle attività, che gestisce il ciclo di vita delle applicazioni e fornisce un backstack di navigazione comune.

8 Android comprende un set di librerie C/C++ usate da varie componenti del sistema. Questi elementi sono presentati allo sviluppatore attraverso il framework per applicazioni di Android. Queste sono alcune delle librerie principali: System C library: un'implementazione BSD-derived della libreria standard C system (libc), disegnata per dispositivi basati su Linux. WebKit: è un framework open source per applicazioni sviluppato dalla Apple ed è il motore di Safari e di altre applicazioni come Google Chrome. FreeType: rendering di bitmap e vector font SQLite: un motore di database relazionale potente e leggero disponibile per tutte le applicazioni

9 Dalvik è una macchina virtuale ottimizzata per sfruttare la poca memoria presente nei dispositivi mobili, consente di far girare diverse istanze della macchina virtuale contemporaneamente e nasconde al sistema operativo sottostante la gestione della memoria e dei thread. Dalvik VS Java Virtual Machine Dimensioni ridotte. Sostanziale differenza con il bytecode Java. Ottimizzata per eseguire istanze multiple.

10 La compilazione avviene tramite un compilatore standard java, successivamente il bytecode viene convertito tramite lutility dx messa a disposizione da Google. Il risultato finale del processo è il pacchetto.apk che oltre alle classi compilate contiene anche tutte le risorse necessarie allapplicazione..dex.class.jar.java.apk javac jar aapt dx

11 Il cuore della piattaforma Android è il kernel Linux versione 2.6, responsabile per che riguarda: Driver dei dispositivi (Camera, WiFi, Memorie, Audio, etc..). Accesso alle risorse. Gestione della batteria. Comunicazione tra processi. Altre utilità del sistema. Il kernel è stato adattato in modo da essere efficiente sui dispositivi mobili, che presentano risorse limitate (soprattutto per quanto riguarda la memoria principale)

12 Le applicazioni Android sono formate da componenti essenziali che il sistema più instanziare quando necessario. Esistono 4 tipi di mattoni di base per le applicazioni: Activity: si presenta come uninterfaccia grafica per una azione che lutente può intraprendere Service: non presenta uninterfaccia grafica, ma lavora in background per un tempo indefinito Broadcast Receiver: un componente che non fa nientaltro che attendere il verificarsi di un evento esterno comunicato in broadcast dal sistema o da altre applicazioni, e una volta ricevuto lo notifica allapplicazione Content Provider: gestisce e condivide dati tra le applicazioni

13 Le activity sono quei blocchi di unapplicazione che interagiscono con lutente utilizzando lo schermo e i dispositivi di input messi a disposizione dallo smartphone. Comunemente fanno uso di componenti UI già pronti, come quelli presenti nel pacchetto android.widget, ma questa non è necessariamente la regola. Le attività sono probabilmente il modello più diffuso in Android, e si realizzano estendendo la classe base android.app.Activity.

14 onCreate(): richiamato quando si crea per la prima volta lactivity onRestart(): richiamato quando lactivity deve ripartire subito uno stop onStart(): richiamato poco prima che lactivity diviene visibile allutente onResume(): richiamato poco prima che lattività inizi literazione con lutente onPause(): richiamato quando il sistema deve eseguire unaltra activity onStop(): richiamato quando lactivity non è visibile allutente per molto tempo onDestroy(): richiamato dal sistema per ditruggere lactivity, in seguito a finish() o per liberare spazio

15 Le activity seguono una logica a stack, infatti, android, per tutte le applicazioni, tiene traccia della sequenza di visualizzazione delle activity in uno stack. Ogni volta che una applicazione chiede di visualizzare una activity questa viene posta in cima allo stack e quella che era precedentemente visualizzata diventa la penultima. Allinterno di una applicazione, il programmatore, fa navigare lutente da una activity ad unaltra (della stessa applicazione) visualizzando quella che, di volta in volta serve in base alle esigenze dellapplicazione, ma non è detto che tutte le activity appartengono alla stessa applicazione, infatti lo stack è unico e condiviso.

16 Un servizio è un componente di unapplicazione di Android. Rappresenta una operazione che deve essere effettuata per un lungo periodo anche quando lapplicazione non è in primo piano. Ogni servizio deve avere una corrispondenza nel manifesto con il tag In genere un servizio in esecuzione non crea né nuovi processi per la sua esecuzione né nuovi thread. Pertanto deve essere gestito in modo adeguato dallo sviluppatore.

17 Per consentire la comunicazione tra Activity e Service, Android fornisce un meccanismo asincrono basato su scambi di messaggi, alla base di questo ci sono i broadcast receiver. I Service inviano la notifica degli eventi in broadcast; le Activity interessate devono registrarsi al servizio e specificare un oggetto di tipo Broadcast Receiver che gestisce levento. Service DALVIK Activity

18 In genere sia i file che i database sono di esclusiva proprietà dellapplicazione che li genera. I content provider consentono di rendere disponibili i dati ad altre applicazioni Ogni applicazione può definire una tipologia di dati e rendere disponibili tali informazioni esponendo uno o più content provider. Il content provider viene identificato mediante un URI cioè un indirizzo univoco. Es. content://com.android.contacts/contacts

19 In qualsiasi applicazione bisognerebbe sempre separare i dati dalla logica dellapplicazione e dalinterfaccia grafica, in modo da rendere più manutenibile il software (MVC). Android offre gratis questa pratica a patto che si seguano delle regole. Inoltre è possibile creare applicazioni multilingue inserendo le opportune risorse sotto cartelle che portano la sigla della nazione.

20 Unaltra tecnica consiste nello specificare il comportamento dei componenti grafici a seconda dallorientamento dello schermo, del tipo di display, etc... I componenti grafici da visualizzare quando lo schermo è in posizione verticale vanno messi nella cartella res/layout e in res/layout-land nel caso lo schermo risulti ruotato in posizione orizzontale.

21 Il database è un componente fondamentale di qualsiasi applicazione software. Sqlite è una libreria software scritta in linguaggio C che implementa un DBMS SQL. Android incorpora nativamente questa libreria Le principali caratteristiche di SQLite sono: Compattezza (meno di 500K) Velocità E in grado di interpretare stringhe MySQL Codice sorgente disponibile e modificabile

22 Ogni applicazione deve avere un file xml denominato Android Manifest. Il manifesto presenta informazioni essenziali che devono essere note prima dellesecuzione dellapplicazione: Nome del package dellattività principale Descrizione dei componenti dellapplicazione Permessi necessari allapplicazione e le eventuali librerie utilizzate Permessi che le altre applicazioni devono avere per poter interagire con i componenti dellapplicazione La minima versione richiesta dalle Android API.

23

24 Per sviluppare applicazioni in grado di girare su sistemi Android è necessario installare sul proprio PC un apposito kit di sviluppo (SDK), che fornisce librerie, documentazione, emulatore e DDMS necessari per la creazione di nuove applicazioni. Eclipse Plugin Android Dev Tools (ADT): permette la compilazione e creazione del pacchetto in automatico, in oltre mette a disposizione degli strumenti per effettuare il debug lanciando lemulatore in debugging mode.

25 indica una serie di best pratices per garantire la compatibilità: UI Guidelines (dimensioni display, elegance, etc..) Optimizing App Designing for Accessibility, Performance, Responsiveness, Seamlessness Android è progettato per girare su una vasta gamma di dispositivi mobile; per gli sviluppatori ciò aumenta il potenziale numero di utenti della propria applicazione ma nel contempo pone numerosi ostacoli relativi alla compatibilità con lhardware dei diversi device.

26 Nella definizione delle UI si raccomanda di non utilizzare unità di misura come i pixel, mm, etc… ma di usare la density-indipendet pixel: sp per il testo dp per tutti gli altri oggetti grafici Inoltre sono stati definiti 4 valori generalizzati per le densità e dimensioni del display: small, medium, large, xlarge - DIMENSIONI ldpi (low), mdpi (medium), hdpi (high), xhdpi (extra high) - DENSITA Il dp prende come riferimento un display medium mdpi.

27 Android richiede che tutte le applicazioni installate siano firmate digitalmente attraverso un certificato, la cui chiave private è custodita dallo sviluppatore dellapplicazione. Android non permette linstallazione o lesecuzione di applicazioni non certificate e non esiste unautorità centrale che decide sulla pubblicazione o meno dellapplicazione. SDK di Android include tutti gli strumenti necessari per il rilascio dellapplicazione: Keytool e Jarsisgner da linea di comando In alternativa ADT mette a disposizione dello sviluppatore una procedura di export in grado di generare un file.apk firmato digitalmente. Unapplicazione firmata può essere pubblicata sull

28 Perché utilizzare un certificato? Identificare il team di sviluppo per consentire ad Android di stabilire se concedere o meno i permessi richiesti dallapplicazione (meccanismo basato anche sui Feedback) Una nuova versione di unapplicazione può essere rilasciata soltanto dallo stesso team di sviluppo. Bisogna quindi utilizzare certificati con scadenza tale da permettere pieno supporto al suo ciclo di vita

29 No Run-Time Permission I permessi devono essere concessi allatto dellinstallazione dellapplicazione sul proprio device. I permessi richiesti dallapplicazione sono dichiarati nel file AndroidManifest.xml. E possibile esplicitarli anche per ogni singolo mattone. Se unapplicazione cerca di accedere ad una risorsa per cui non è stata autorizzata potrà sollevare uneccezione

30 Il Manifesto prevede delle particolari sezioni in cui dichiarare: Le librerie utilizzate Le features utilizzate (es. hardware: fotocamera, etc…) I permessi richiesti (es. uso Camera, GPS, etc…) Non sempre viene garantito lutilizzo delle risorse specificate nel manifesto

31 E possibile definire permessi custom che altre applicazioni posso utilizzare per accedere alle nostre attività. Unapplicazione può concedere un proprio permesso ad unaltra che non lo detiene mediante il meccanismo per-URI Permission. Esempio: unapplicazione (A) per la gestione delle mail vorrebbe visualizzare una img allegata ma lapplicazione (B) per la visualizzazione delle img non detiene i permessi per accedere agli allegati delle mail. Sarà allora A a passare tramite loggetto Intent il permesso corrispondente mediante una URI.

32 La piattaforma Android è costruita sul kernel Linux 2.6 e sfrutta il suo sistema integrato di sicurezza come parte dellAndroid Security Model. Ogni applicazione gira sotto un UID (User ID) univoco definito allatto dellinstallazione a cui sono associati i permessi dellapplicazione. Ciò definisce i confini in cui lapplicazione può muoversi e previene che altre applicazioni possano accedere direttamente ai dati di questa (e viceversa). Unapplicazione Android può accedere ai propri dati privati (database, file, etc…) senza alcun permesso speciale; per accedere invece a dati condivisi bisogna dichiarare tali permessi nel Manifesto.

33

34 Il Car Sharing (o Car Pooling) è una modalità di trasporto che consiste nella condivisione di automobili private tra un gruppo di persone, con il fine principale di ridurre i costi. Diffusa in ambienti lavorativi o universitari, dove diversi soggetti, che percorrono la medesima tratta nella stessa fascia oraria, spontaneamente si accordano per viaggiare insieme. CarSharingMobile v1.0 per dispositivi mobili Android fornisce supporto allutente nellorganizzazione di un viaggio sia come autista che passeggero.

35 Registrazione Utente non registrato Utente registrato Login Ricerca Passaggio Aggrega Passaggio Offre Passaggio Offre Passaggio Gestisce Passaggi Gestisce Account Gestisce Auto > Invia Feedback > Visualizza Mappa >

36 INTERNET Map API Car Sharing Server JAVA JAX-RS Car Sharing Mobile v1.0

37 Il paradigma REST è basato su un protocollo di comunicazione stateless, client-server, chacheable e scalabile, basato su HTTP. Elementi fondamentali di un Web Services basato sulla architettura REST: Risorse Rappresentazione delle risorse Operazioni sulle risorse

38 Un servizio RESTful gestisce un insieme di risorse Esempio: nel nostro sistema di carSharing le risorse potranno essere gli utenti le auto, i viaggi Una risorsa può rappresentare una collezione di altre risorse Esempio: una risorsa potrà essere un insieme di viaggi che corrispondono a un criterio di ricerca

39 Ogni risorsa è identificata attraverso un URL specifico Esempi: Insieme auto di un utente Singola auto

40 Ciascuna risorsa può avere più rappresentazioni diverse Ad esempio la nostra applicazione potrebbe fornire una rappresentazione di un auto: in formato HTML per la visualizzazione da parte di una pagina web pdf per la stampa json per essere utilizzata da un altra applicazione.

41 Nellapproccio REST si usa un numero limitato di operazioni per leggere o modificare lo stato delle risorse. Le operazioni corrispondono ai metodi definiti nel protocollo HTTP e non tutte le operazioni sono disponibili su tutte le risorse. OperazioneMetodo Http Creazione nuova risorsa Idempotente: Sostituzione risorsa esistente PUT Creazione nuova risorsa Modifica (valori) risorsa preesistente POST Cancellazione risorsaDELETE Accesso (visualizzazione, etc…) alla risorsaGET

42 Una richiesta HTTP contiene: lURL della risorsa a cui è riferita loperazione da effettuare (es. GET) informazioni aggiuntive (headers), ad esempio per indicare il tipo di rappresentazione richiesta per alcune operazioni, un corpo della richiesta (body); in particolare il body è presente nelle operazioni PUT e POST User-Agent: Mozilla/5.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip,deflate

43 Una risposta HTTP contiene: un codice numerico che indica lesito delloperazione (status) informazioni aggiuntive (headers); ad esempio, il tipo di rappresentazione restituito per alcune operazioni, un corpo della risposta (body) HTTP/ OK X-Powered-By: Servlet 2.4; JBoss GA Content-Type: text/html JBoss RESTEasy Project JBoss RESTEasy

44 Lo status è codificato su 3 cifre e la prima cifra indica l'esito generale: 2xx: operazione eseguita con successo 3xx: redirezione (la risorsa desiderata si trova su altro indirizzo) 4xx: errore da parte del client 5xx: errore interno al server

45 JSON (JavaScript Object Notation) è un semplice formato per lo scambio di dati. Basato su due strutture: Un insieme di coppie nome/valore Un elenco ordinato di valori. Nella maggior parte dei linguaggi questo si realizza con un array, un vettore, un elenco o una sequenza. Queste sono strutture di dati universali. Virtualmente tutti i linguaggi di programmazione moderni li supportano in entrambe le forme.

46 I tipi di dato supportati sono: Booleani Interi, reali, virgola mobile Stringhe Array Null Inoltre è consentito luso di strutture formate dai parametri supportati. { "type": "menu", "value": "File", "items": [ {"value": "New", "action": "CreateNewDoc"}, {"value": "Open", "action": "OpenDoc"}, {"value": "Close", "action": "CloseDoc"} ] }

47 Semplicità Json ha una grammatica molto più piccola di xml Ridondanza XML ha una ridondanza maggiore di JSON con conseguente aumento di peso Interoperabilità Json e Xml hanno lo stesso potenziale di interoperabilità. Xml attualmente è molto utilizzato ma Json inizia a farsi conoscere grazie alla facilità di conversione da Xml a Json e la presenza di librerie di parsing nella maggior parte dei linguaggi di programmazione.

48 Il server dell'applicazione Car Sharing Mobile è basato sulla tecnologia REST ed è implementato mediante il framework Jersey che aderisce alla JAX-RS. JAX-RS che definisce i servizi mediante l'uso di annotazioni. il path @DELETESpecifica il tipo di richiesta il tipo di risposta definita secondo MIME media il formato accettato definito secondo MIME media i parametri al i parametri ai un valore di default in caso il parametro risulti assente.

49 Service User/ Car/ Trip/ Notification/ Service User/ Car/ Trip/ Notification/ NotificationService TripService CarService UserService DAO ConnectionManager DataAccessObject Configuration Bean CarCity LiftTrip UserFeedback Notification Utility Base64 DateUtility ImageUtility

50 Contiene le risorse fornite agli utenti, tra le principali: RisorsaDescrizione User/Rappresenta un utente User/FeedbackRappresenta un feedback Trip/Rappresenta un viaggio Trip/PassengerRappresenta un passeggero di un trip Trip/ListRappresenta un acollezione di viaggi CarRappresenta un auto Car/ListRappresenta una collezione di auto NotificationRappresenta una collezione di notifiche

51 Si occupa dell'interfacciamento e della gestione del db: ConnectionManager Si occupa della gestione delle connessioni al DB, implementando il riciclo delle stesse tramite un pool di connessioni libere. Utilizza il pattern singleton. DataAccessObject Realizza le query verso il DB, utilizzando una connessione richiesta al connectionManager.

52

53 Package Bean In questo package sono contenute classi definite come contenitori di dati. Package Utility Offre i servizi di supporto all'applicazione, gestione delle date, codifica/decodifica delle immagini, gestione della memoria, etc.. Package Configuration Riporta informazioni sulla configurazione del server.

54 La struttura classica di un progetto Android è costituita da un albero di directory: DirectoryScopo Src Contiene tutti i sorgenti dellapplicazione Res/Assets Ospitano risorse esterne necessarie allapplicazione (drawable, layout, values) Gen Package utile per accedere in modo automatico e veloce alle risorse AndroidManifest.xmlDescrittore dellapplicazione

55 La UI dellapplicazione è stata interamente disegnata utilizzando i file xml di layout. Per una maggiore compatibilità con le diverse dimensioni degli schermi dei dispositivi mobili è stata utilizzata soltanto le unità di misura dp e sp. Anche lOption Menu ed i vari Context Menu sono stati definiti mediante file xml.

56 Nel file xml vengono definiti i layout ed i vari widget grafici mediante opportuni tag xml. Attiva lo scroller sul display se necessario Contenitore principale Widget: pulsante con immagine

57 Per i menu dellapplicazione è stata realizzata una classe TemplateMenuActivity, estesa da ogni altra attività localizzando così in un unico punto il codice di gestione degli stessi. Option Menu Nelle classi che visualizzano liste di elementi presenta altre voci per laggiornamento e gestione delle liste Context Menu Contiene le voci per la gestione di un singolo elemento della lista

58 NotificationService Bean CarCity LiftTrip UserFeedback Notification View CarListActivity EditCarActivity EditTripActivity LoginActivity MainMenuActivity MyTripTab SearchLiftActivity ShowMapActivity ShowTripActivity TripListActivity Utility Base64 CameraView DateUtility ImageUtility Services CarSharing CarSharingUrlAndCodes UserDBUserSession

59 Ciascuna attività rappresenta una finestra mostrata allutente e contiene il codice di controllo dei widget grafici. Per evitare di bloccare lUI tutte le comunicazioni verso il server sono gestite tramite opportuni Thread e Handler. Gli handler sono necessari per aggiornare lUI e mostrare allutente il risultato delle operazioni eseguite. View CarListActivity EditCarActivity EditTripActivity LoginActivity MainMenuActivity MyTripTab SearchLiftActivity ShowMapActivity ShowTripActivity TripListActivity

60 Services CarSharing CarSharingUrlAndCodes UserDBUserSession Carsharing consente di richiedere i servizi (WS) al server CarsharingUrlAndCodes è una interfaccia di supporto utile per la definizione di costanti e URL usate nel progetto. UserDB è una classe che consente di avere accesso al database locale del dispositivo. Nella fattispecie si sono create due tabelle (user, notification). La prima utile in fase di login, la seconda per tenere traccia delle notifiche dellutente. UserSession tiene traccia della sessione dellutente. Inoltre offre dei metodi utili in fase di login

61 Android permette di usare la fotocamera in maniera versatile semplicemente usando il package android.camera richiamando la classe Camera contenuta allinterno. Mediante limpostazione dei parametri di preview è possibile mostrare allutente linquadratura corrente della fotocamera Luso della fotocamera deve essere dichiarato nel manifesto dellapplicazione

62 Google mette a disposizione una vasta gamma di interfacce utili per usufruire dei servizi di Geolocalizzazione. Le 3 famiglie più importanti sono: Geocoding API Places API Elevation API Es. Geocoding Request Es. Geocoding Response

63 Il dispositivo GPS presente sulla maggior parte degli smartphone permette di rilevare la posizione dellutente in termini di latitudine e longitudine. Queste quantità vengono elaborate mediante le api di google maps permettendo di ricavare lindirizzo della zona indicata a partire dalle coordinate. Nel caso in cui il servizio GPS non risulti disponibile Android permette di reperire la posizione dellutente mediante luso delle reti Wi-Fi.

64 La status bar viene usata nellapplicazione per tenere traccia delle notifiche che vengono inviate allutente. In particolare viene inviata una notifica allutente quando: Il viaggio viene aggiornato Il viaggio viene cancellato Un utente fa una richiesta di aggiungersi ad un viaggio Conferma aggiunta passeggero Rifiuto aggiunta passeggero Il passeggero si elimina dal viaggio Lautista elimina un passeggero Nuove notifiche

65 INTERNET DNS

66 Vantaggi Svantaggi Open Source JAVA Supporto Semplicità Hardware Dependent

67


Scaricare ppt "Università degli Studi di Salerno Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica Daniele Cafaro 0622700020 Gianfranco Cerrato 0622700029."

Presentazioni simili


Annunci Google