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

136
-1

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
1 Comment
1 Like
Statistics
Notes
No Downloads
Views
Total Views
136
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
2
Comments
1
Likes
1
Embeds 0
No embeds

No notes for slide

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
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×