Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
ALMA MATER STUDIORUM - UNIVERSITÀ DI BOLOGNA
SCUOLA DI INGEGNERIA E ARCHITETTURA
Dipartimento di Informatica - Scienza e I...
Le motivazioni dello sviluppo (1)
●

In seno alla collaborazione con Mobile Activity del Dott. Ventura,
si vuole realizzar...
Le motivazioni dello sviluppo (2)
●

L'applicazione viene generalizzata in un insieme di Framework:
–
–

–
–

●

Modello M...
I lifecycle di Activity e Service

3
I Framework Sviluppati (1)
●

Hermes:
–

–
●

Diane:
–
–

●

implementa un MVC più strutturato della modalità standard And...
I Framework Sviluppati (2)
●

Ulysses:

è una specializzazione di Diane
utilizza Socrates e fornisce ulteriori classi di c...
L'implementazione (1)
●

Hermes:
–
–
–

pattern “Service as Controller Container”
Il Service mantiene l'istanza del Contro...
L'implementazione (2)
●

Socrates:

utilizza Google Http Java Client, di cui sfrutta il sistema di binding JSON/Java,
effe...
Demo Application “Ratafìa” (1): main

8
Demo Application “Ratafìa” (2): search

9
Demo Application “Ratafìa” (3): result

10
Demo Application “Ratafìa” (4): list

11
Demo Application “Ratafìa” (5): map

12
Test e risultati sperimentali
●
●
●

●

●

L'applicazione finale Ratafìa impiega ~2,3 sec
Ricerca dei esaurita in ~16,3 se...
Conclusioni e estensioni future
●

●

●

●

Le soluzioni proposte, alla luce dei test, risultano funzionali
e pienamente u...
Upcoming SlideShare
Loading in …5
×

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

292 views

Published on

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

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

  1. 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. 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. 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. 4. I lifecycle di Activity e Service 3
  5. 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. 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. 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. 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. 9. Demo Application “Ratafìa” (1): main 8
  10. 10. Demo Application “Ratafìa” (2): search 9
  11. 11. Demo Application “Ratafìa” (3): result 10
  12. 12. Demo Application “Ratafìa” (4): list 11
  13. 13. Demo Application “Ratafìa” (5): map 12
  14. 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. 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

×