際際滷

際際滷Share a Scribd company logo
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
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
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
I lifecycle di Activity e Service

3
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
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
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
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
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 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
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

More Related Content

Similar to Android Frameworks for Geolocalized Apps Development: Diane, Hermes, Polaris/Kusor, Socrates, Ulysses (20)

v2 Presentazione Lelli
v2 Presentazione Lelliv2 Presentazione Lelli
v2 Presentazione Lelli
Matteo Lelli
TravelStory presentation
TravelStory presentationTravelStory presentation
TravelStory presentation
Alessio Ciarrocchi
Angular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un frameworkAngular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un framework
Giovanni Buffa
Sviluppare applicazioni geolocalizzate per iPhone
Sviluppare applicazioni geolocalizzate per iPhoneSviluppare applicazioni geolocalizzate per iPhone
Sviluppare applicazioni geolocalizzate per iPhone
Eduard Roccatello
Progetto SOD Davide Sito
Progetto SOD Davide SitoProgetto SOD Davide Sito
Progetto SOD Davide Sito
Davide Sito
Progetto e realizzazione di un'applicazione WebGIS per la visualizzazione di ...
Progetto e realizzazione di un'applicazione WebGIS per la visualizzazione di ...Progetto e realizzazione di un'applicazione WebGIS per la visualizzazione di ...
Progetto e realizzazione di un'applicazione WebGIS per la visualizzazione di ...
diegohusu
Il progetto INNO: dal dato alla applicazione - Pierluigi Cau (CRS4)
Il progetto INNO: dal dato alla applicazione - Pierluigi Cau (CRS4)Il progetto INNO: dal dato alla applicazione - Pierluigi Cau (CRS4)
Il progetto INNO: dal dato alla applicazione - Pierluigi Cau (CRS4)
Sardegna Ricerche
DrupalGap: crea una app Android (ed iOS) con Drupal, Drupalgap ed Apache Cordova
DrupalGap: crea una app Android (ed iOS) con Drupal, Drupalgap ed Apache CordovaDrupalGap: crea una app Android (ed iOS) con Drupal, Drupalgap ed Apache Cordova
DrupalGap: crea una app Android (ed iOS) con Drupal, Drupalgap ed Apache Cordova
DrupalDay
GWT Development for Handheld Devices
GWT Development for Handheld DevicesGWT Development for Handheld Devices
GWT Development for Handheld Devices
GWTcon
i-BIO_verifica_ispettiva_20_marzo_2014
i-BIO_verifica_ispettiva_20_marzo_2014i-BIO_verifica_ispettiva_20_marzo_2014
i-BIO_verifica_ispettiva_20_marzo_2014
Massimo Natale
Presentazione tesi magistrale
Presentazione tesi magistralePresentazione tesi magistrale
Presentazione tesi magistrale
Federico Cacco
Xamarin.android
Xamarin.androidXamarin.android
Xamarin.android
Beniamino Ferrari
Sviluppo di un'applicazione ibrida su dispositivo mobile per l'interfacciamen...
Sviluppo di un'applicazione ibrida su dispositivo mobile per l'interfacciamen...Sviluppo di un'applicazione ibrida su dispositivo mobile per l'interfacciamen...
Sviluppo di un'applicazione ibrida su dispositivo mobile per l'interfacciamen...
Mattia De Bernardi
Introduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile AndroidIntroduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile Android
Open Makers Italy
Drupal 10: un framework PHP di sviluppo Cloud Native moderno
Drupal 10: un framework PHP di sviluppo Cloud Native modernoDrupal 10: un framework PHP di sviluppo Cloud Native moderno
Drupal 10: un framework PHP di sviluppo Cloud Native moderno
sparkfabrik
VisualDDHub - final approach
VisualDDHub - final approachVisualDDHub - final approach
VisualDDHub - final approach
Martina Garofalo
Il Web orientato al futuro: Express, Angular e nodeJS
Il Web orientato al futuro: Express, Angular e nodeJS Il Web orientato al futuro: Express, Angular e nodeJS
Il Web orientato al futuro: Express, Angular e nodeJS
Eugenio Minardi
Google AppEngine
Google AppEngineGoogle AppEngine
Google AppEngine
Alessio Dimauro
I linguaggi del web - seconda edizione (3属 giornata)
I linguaggi del web - seconda edizione (3属 giornata)I linguaggi del web - seconda edizione (3属 giornata)
I linguaggi del web - seconda edizione (3属 giornata)
Diego La Monica
01 2014 03-31 - riezzo- mods cineporto bari
01 2014 03-31 - riezzo- mods cineporto bari01 2014 03-31 - riezzo- mods cineporto bari
01 2014 03-31 - riezzo- mods cineporto bari
Apulian ICT Living Labs
v2 Presentazione Lelli
v2 Presentazione Lelliv2 Presentazione Lelli
v2 Presentazione Lelli
Matteo Lelli
Angular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un frameworkAngular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un framework
Giovanni Buffa
Sviluppare applicazioni geolocalizzate per iPhone
Sviluppare applicazioni geolocalizzate per iPhoneSviluppare applicazioni geolocalizzate per iPhone
Sviluppare applicazioni geolocalizzate per iPhone
Eduard Roccatello
Progetto SOD Davide Sito
Progetto SOD Davide SitoProgetto SOD Davide Sito
Progetto SOD Davide Sito
Davide Sito
Progetto e realizzazione di un'applicazione WebGIS per la visualizzazione di ...
Progetto e realizzazione di un'applicazione WebGIS per la visualizzazione di ...Progetto e realizzazione di un'applicazione WebGIS per la visualizzazione di ...
Progetto e realizzazione di un'applicazione WebGIS per la visualizzazione di ...
diegohusu
Il progetto INNO: dal dato alla applicazione - Pierluigi Cau (CRS4)
Il progetto INNO: dal dato alla applicazione - Pierluigi Cau (CRS4)Il progetto INNO: dal dato alla applicazione - Pierluigi Cau (CRS4)
Il progetto INNO: dal dato alla applicazione - Pierluigi Cau (CRS4)
Sardegna Ricerche
DrupalGap: crea una app Android (ed iOS) con Drupal, Drupalgap ed Apache Cordova
DrupalGap: crea una app Android (ed iOS) con Drupal, Drupalgap ed Apache CordovaDrupalGap: crea una app Android (ed iOS) con Drupal, Drupalgap ed Apache Cordova
DrupalGap: crea una app Android (ed iOS) con Drupal, Drupalgap ed Apache Cordova
DrupalDay
GWT Development for Handheld Devices
GWT Development for Handheld DevicesGWT Development for Handheld Devices
GWT Development for Handheld Devices
GWTcon
i-BIO_verifica_ispettiva_20_marzo_2014
i-BIO_verifica_ispettiva_20_marzo_2014i-BIO_verifica_ispettiva_20_marzo_2014
i-BIO_verifica_ispettiva_20_marzo_2014
Massimo Natale
Presentazione tesi magistrale
Presentazione tesi magistralePresentazione tesi magistrale
Presentazione tesi magistrale
Federico Cacco
Sviluppo di un'applicazione ibrida su dispositivo mobile per l'interfacciamen...
Sviluppo di un'applicazione ibrida su dispositivo mobile per l'interfacciamen...Sviluppo di un'applicazione ibrida su dispositivo mobile per l'interfacciamen...
Sviluppo di un'applicazione ibrida su dispositivo mobile per l'interfacciamen...
Mattia De Bernardi
Introduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile AndroidIntroduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile Android
Open Makers Italy
Drupal 10: un framework PHP di sviluppo Cloud Native moderno
Drupal 10: un framework PHP di sviluppo Cloud Native modernoDrupal 10: un framework PHP di sviluppo Cloud Native moderno
Drupal 10: un framework PHP di sviluppo Cloud Native moderno
sparkfabrik
VisualDDHub - final approach
VisualDDHub - final approachVisualDDHub - final approach
VisualDDHub - final approach
Martina Garofalo
Il Web orientato al futuro: Express, Angular e nodeJS
Il Web orientato al futuro: Express, Angular e nodeJS Il Web orientato al futuro: Express, Angular e nodeJS
Il Web orientato al futuro: Express, Angular e nodeJS
Eugenio Minardi
I linguaggi del web - seconda edizione (3属 giornata)
I linguaggi del web - seconda edizione (3属 giornata)I linguaggi del web - seconda edizione (3属 giornata)
I linguaggi del web - seconda edizione (3属 giornata)
Diego La Monica
01 2014 03-31 - riezzo- mods cineporto bari
01 2014 03-31 - riezzo- mods cineporto bari01 2014 03-31 - riezzo- mods cineporto bari
01 2014 03-31 - riezzo- mods cineporto bari
Apulian ICT Living Labs

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

  • 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
  • 10. Demo Application Rataf狸a (2): search 9
  • 11. Demo Application Rataf狸a (3): result 10
  • 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