Your SlideShare is downloading. ×
0
Android Frameworks for Geolocalized Apps Development: Diane, Hermes, Polaris/Kusor, Socrates, Ulysses
Android Frameworks for Geolocalized Apps Development: Diane, Hermes, Polaris/Kusor, Socrates, Ulysses
Android Frameworks for Geolocalized Apps Development: Diane, Hermes, Polaris/Kusor, Socrates, Ulysses
Android Frameworks for Geolocalized Apps Development: Diane, Hermes, Polaris/Kusor, Socrates, Ulysses
Android Frameworks for Geolocalized Apps Development: Diane, Hermes, Polaris/Kusor, Socrates, Ulysses
Android Frameworks for Geolocalized Apps Development: Diane, Hermes, Polaris/Kusor, Socrates, Ulysses
Android Frameworks for Geolocalized Apps Development: Diane, Hermes, Polaris/Kusor, Socrates, Ulysses
Android Frameworks for Geolocalized Apps Development: Diane, Hermes, Polaris/Kusor, Socrates, Ulysses
Android Frameworks for Geolocalized Apps Development: Diane, Hermes, Polaris/Kusor, Socrates, Ulysses
Android Frameworks for Geolocalized Apps Development: Diane, Hermes, Polaris/Kusor, Socrates, Ulysses
Android Frameworks for Geolocalized Apps Development: Diane, Hermes, Polaris/Kusor, Socrates, Ulysses
Android Frameworks for Geolocalized Apps Development: Diane, Hermes, Polaris/Kusor, Socrates, Ulysses
Android Frameworks for Geolocalized Apps Development: Diane, Hermes, Polaris/Kusor, Socrates, Ulysses
Android Frameworks for Geolocalized Apps Development: Diane, Hermes, Polaris/Kusor, Socrates, Ulysses
Android Frameworks for Geolocalized Apps Development: Diane, Hermes, Polaris/Kusor, Socrates, Ulysses
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Android Frameworks for Geolocalized Apps Development: Diane, Hermes, Polaris/Kusor, Socrates, Ulysses

96

Published on

A short presentation for my bachelor thesis, about 5 frameworks for development of geolocalized Android apps: …

A short presentation for my bachelor thesis, about 5 frameworks for development of geolocalized Android apps:
- Diane: for an awareness searching
- Hermes: a different mvc in android
- Polaris/Kusor: a better solution for location retrieving
- Socrates: a Google Places Api library, in pure Java
- Ulysses: a specific use of Diane, for aware search of places from Google Places - that is: the summa of Diane and Socrates.

Code available on github:
https://github.com/k0smik0/diane
https://github.com/k0smik0/hermes
https://github.com/k0smik0/polaris
https://github.com/k0smik0/kusor
https://github.com/k0smik0/socrates
https://github.com/k0smik0/ulysses

Published in: Technology
1 Comment
1 Like
Statistics
Notes
No Downloads
Views
Total Views
96
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
2
Comments
1
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. ALMA MATER STUDIORUM - UNIVERSITÀ DI BOLOGNA SCUOLA DI INGEGNERIA E ARCHITETTURA Dipartimento di Informatica - Scienza e Ingegneria Corso di Laurea in Ingegneria Informatica Tesi Di Laurea in Tecnologie Web T Framework di Supporto allo Sviluppo di Applicazioni Georeferenziate su Android - Collaborazione presso Mobile Activity - CANDIDATO Massimiliano Leone RELATORE Prof. Ing. Paolo Bellavista CORRELATORE Dott. Giuseppe Ventura Anno Accademico 2012-2013 Sessione III
  • 2. Le motivazioni dello sviluppo (1) ● In seno alla collaborazione con Mobile Activity del Dott. Ventura, si vuole realizzare un'applicazione Android per la ricerca georeferenziata di dati: – – Progetto “Aperò”, per la ricerca di bar/cafè per l'aperitivo Altri progetti similari, per tipi differenti di ricerca: “OnYourTips”, “Mandovai” Prima applicazione sperimentale, quale modello per successivi progetti: – – – – ● Responsiva Estendibile Agevole mantenimento futuro Parti comuni riutilizzabili Gli obiettivi fissati trovano ostacolo in alcune inefficienze di Android standard: – – – – Difficoltà, in alcuni casi, nell'ottenere la geoposizione (latenza/triangolazione poco accurata) Assenza di un modello strutturato come MVC, indispensabile in progetti complessi Framework troppo focalizzato sulla UI Implementazione onerosa per qualsivoglia attività 1
  • 3. Le motivazioni dello sviluppo (2) ● L'applicazione viene generalizzata in un insieme di Framework: – – – – ● Modello MVC più strutturato, alternativo all'uso di Activity quale Controller “Dividi et impera” - ogni componente risolve problematiche specifiche: ● retrieve della geolocation ● interrogazione alla fonte di dati ● persistenza Astrazione di onerose implementazioni tramite Command e Facade Possibilità di facile riutilizzo in applicazioni di differente natura Strumenti utilizzati: – – – Debian Gnu/Linux Eclipse, SDK Android, Emulatore QEMU, DDMS. Git Samsung S5570, single core 600 Mhz 2
  • 4. I lifecycle di Activity e Service 3
  • 5. I Framework Sviluppati (1) ● Hermes: – – ● Diane: – – ● implementa un MVC più strutturato della modalità standard Android, reinterprentando l'uso dei due principali componenti, Activity e Service: ● il primo avrà solo onere della gestione della vista ● il secondo sarà utilizzato come contenitore del codice di business permette anche di svincolarsi dall'uso di Parcelable rappresenta la business logic, e utilizza meccanismi “awareness” per l'esecuzione delle ricerche geolocalizzate dei dati d'interesse è generics-based Socrates: – – è un helper per l'interrogazione della fonte remota (Google Places) traduce la response JSON in oggetti Java 4
  • 6. I Framework Sviluppati (2) ● Ulysses: è una specializzazione di Diane utilizza Socrates e fornisce ulteriori classi di comodo per gestire alcune View – – ● Polaris/Kusor: – – wrapper per gli statement necessari al retrieve della geolocation applica algoritmi più evoluti per ridurre la latenza del retrieve 5
  • 7. L'implementazione (1) ● Hermes: – – – pattern “Service as Controller Container” Il Service mantiene l'istanza del Controller La classe Connector incapsula gli statement di bind al Service, e fornisce l'accesso all'istanza suddetta I client (Activity/Fragment) ottengono un'istanza di Connector (Singleton), dal quale accedono agli oggetti della la business logic @Inject Connector<MyService,MyController> conn; conn.getController().doSomething(); ● Diane: logiche “aware” incapsulate nel Controller – – – Check della “usefulness” della fresh location prima di avviare un nuovo task di ricerca Garanzia del risultato: in assenza di rete uso di cache locale Situazioni “failure” gestite con stati di ritorno o gerarchia di eccezioni public Void search(Void... nop) throws LocationNotSoUsefulException, //.. { boolean locationUseful =locationAwareSupplier.isNewLocationUseful(); if (locationUseful) return doSearch(); //.. throw new LocationTooNearException(); // if false } 6
  • 8. L'implementazione (2) ● Socrates: utilizza Google Http Java Client, di cui sfrutta il sistema di binding JSON/Java, effettuato tramite annotations e reflection @Inject Searcher searcher; SearchResponse searchResponse = searcher.search( newFreshLocation ); List<Place> places = searchResponse.getStatus() .handleStatusAndGetData(searchResponse); ● Polaris/Kusor: utilizza Novocation, che sfrutta il PendingIntent in luogo di LocationListener, nonché il Passive_Provider @Inject Locator locator; locator.startLocationUpdates(); / locator.stopLocationUpdates(); Location location = locator.getLocation(); ● Uso globale dell'Inversion of Control tramite RoboGuice 7
  • 9. Demo Application “Ratafìa” (1): main 8
  • 10. Demo Application “Ratafìa” (2): search 9
  • 11. Demo Application “Ratafìa” (3): result 10
  • 12. Demo Application “Ratafìa” (4): list 11
  • 13. Demo Application “Ratafìa” (5): map 12
  • 14. Test e risultati sperimentali ● ● ● ● ● L'applicazione finale Ratafìa impiega ~2,3 sec Ricerca dei esaurita in ~16,3 sec Spazio occupato: ~1,1MB, di cui ~900kB (post dexing) per i jars da includere Memoria occupata: – Complessiva: ~7,4MB per View leggere (List); ~12,4MB per MapView – Heap (post garbage collection degli oggetti della View): ~4,2 MB Tempi impiegati per i controlli “aware”: ~0,032ms 13
  • 15. Conclusioni e estensioni future ● ● ● ● Le soluzioni proposte, alla luce dei test, risultano funzionali e pienamente utilizzabili in fase di produzione Tempi brevi per lo sviluppo dell'applicazione demo “Ratafìa”, a dimostrazione della facile integrazione dei framework illustrati Applicazioni dagli intenti similari, di cui i progetti all'inizio - ma non solo - possono giovare della bontà dei componenti, e focalizzare l'impegno per proprie specifiche funzionalità Diane: Intenti futuri implementare un sistema di cache (NoSQL o SQLite+ORM) ● Ratafìa: estrapolando parti significative, astrarre ad un framework per la gestione dell'interfaccia grafica, utilizzando efficienti UI pattern (ActionBar, Drawer Navigation, etc.) 14

×