Sviluppo di un applicazione Android per la gestione di eventi presso siti turistici

Documenti analoghi
Modulo IrisAPP. La APP per responsabili e dipendenti

Modulo IrisAPP. La APP per responsabili e dipendenti

MANUALE D UTILIZZO SOFTWARE MYBUS FAMILY CONTATTI. Indirizzo. Telefono & Fax. Online. WPS S.r.l. Via S. Marco, Monopoli (BA) Italia

ANDROID. Mobile Web Design. Corso di programmazione di sistemi mobile 1

Specifica dei requisiti

MANUALE D UTILIZZO SOFTWARE MYBUS FAMILY CONTATTI. Indirizzo. Telefono & Fax. Online. WPS S.r.l. Via S. Marco, Monopoli (BA) Italia

Fondamenti di sviluppo mobile su Android

MANUALE DI UTILIZZO APP LIBRETTO D IMPIANTO ELETTRICO

L00_Introduction. E. Falzone ITIS Magistri Cumacini

Manuale LiveBox APPLICAZIONE ANDROID (V )

Business Community Confindustria

Guida Piattaforma su PC. HealthCity APP

Roma, 19 ottobre 2012 ROMA CAPITALE. OPENDATA Proposta per lo sviluppo di un APP per l offerta di servizi innovativi ai cittadini

Padova Partecipa Manuale Utente

ProgettAzione tecnologie in movimento - V anno Unità 4 - Applicazioni per i sistemi mobili

Utilizzo collegamento remoto

FlyHigh. Progetto realizzato per l'esame di Laboratorio e Progettazione Web. Corso di Laurea in Informatica Umanistica. Italo Dei

IrisAPP La APP per dipendenti

Mobile Programming. Prova scritta del 08/01/2016. Prof. De Prisco. Corso di laurea in Informatica

WINDOWS TERMINAL SERVER PER L ACCESSO REMOTO AL SISTEMA DI PROTOCOLLO INFORMATICO


Descrizione archivistica

M n a u n a u l a e l e o p o e p r e a r t a i t v i o v o Ver /12/2014

ONLINEINVENTORY IL TUO INVENTARIO CONTROLLATO SWITALIA. 7 aprile 2017 Autore: Francesco Lombardi

Manuale versione Mobile (Smartphone Tablet)

Progettazione Logica e Modello Realizzativo

Come ottenere una videata unica con i voti scritti e orali e la media tra tutti i voti

SOFTWARE. Programmi e dati che indicano al computer come svolgere un determinato compito

COMUNICA, PROMUOVI, VENDI.

ARCHITETTURA FISICA DEL SISTEMA

Guida Rapida per i Docenti dell ITIS Galilei

ARCHITETTURA FISICA DEL SISTEMA

Il nuovo sito PON. Guida alla navigazione

SELFCARE WIND TRE BUSINESS MANUALE UTENTE AD USO INTERNO

INTRODUZIONE. Pagina 1 di 5


ECivisWEB Applicazione mobile per Android e ios

SISTEMA DI CONTROLLO E GESTIONE STAZIONI DI RICARICA E-CORNER PER VEICOLI ELETTRICI

MANUALE D USO. Per ulteriori info su GeckoWay visita il sito Pag. 1 a 40

INGEGNERIA DEL SOFTWARE

Area riservata Legnago: Guida rapida

Planet Inside CONTROLLO ACCESSI BUILDING AUTOMATION. Il sistema integrato robusto e flessibile per piccole e grandi aziende

PROGETTO GUIDA ALL'UTILIZZO DELLA COMMUNITY

UTEAP Università della Terza Età e del tempo libero di Ascoli Piceno

Cookie Policy. Functionality Cookie

Contest grafico Applicazione mobile Area Clienti3

Vademecum invio notifiche push dal portale cittadinoinformato.it

Solution Integrator 18/06/16.

Progetto Istanze On Line. Presentazione OnLine Modello B. 13 Giugno 2014

UTEAP Università della Terza Età e del tempo libero di Ascoli Piceno 33 ANNO ACCADEMICO

MANUALE DELL UTENTE FINALE PROGETTO SGI-L3-CUPJ67H SISTEMA INFORMATICO CENTRALE PER SELEZIONE ESPERTI ASSISTENZA TECNICA

Cosa mi serve per avere L App Fag8?

IrisAPP La APP per i Responsabili

Lezione 15 programmazione in Java. Nicola Drago Dipartimento di Informatica Università di Verona

APLICACIONES MÓVILES PARA EVENTOS Y CONGRESOS. Applicazioni per eventi e congressi

Fotocamera digitale Guida software

Progetto e sviluppo di un applicazione Android per il controllo di reti di sensori senza filo

FAQ IRIDIUM GO! Servizio Clienti Intermatica -

DESCRIZIONE CREAZIONE APP Si suddivide in 4 fasi di lavoro: 1. PIANIFICAZIONE; 2. PROGETTAZIONE; 3. SVILUPPO; 4. DISTRIBUZIONE.

GUIDA ALL UTILIZZO DEL. Portale Privato per la gestione e distribuzione di contenitori, chiavi, trasponder

Solution Integrator 28/12/16.

un account di facebook registrazione di un nuovo account su Urbania Cittadino di Urbania

Introduzione ORGANIZZAZIONE DEL LIBRO. Il libro è composto da 12 capitoli organizzati nelle tre parti seguenti:

Prova d Esame Compito A

ENAIP Trentino Centro Formazione Professionale Alberghiera Primiero

Filavia BookingApp App di prenotazione remota da Web e dispositivo mobile

Manuale Utente per la Gestione dei Revisori degli Enti Locali

PerElmec Mobile App. Guida sull utilizzo della App mobile del PerElmec. Autore: Uff. Sviluppo Web Rev. Dicembre Sviluppo Web e Mobile

MANUALE DI UTILIZZO GENITORE. sospediatra.org

Guida per l utilizzo della WEB COMMUNITY

Soluzione TrustMail BancaStato Manuale di riferimento a uso della clientela

Guida all utilizzo Spotlink per utente finale

Manuale Utente Webbiobank

Come Sfruttare il Social Fotografico più Famoso al Mondo per Promuovere il Tuo Brand e la Tua Azienda. Titolo INSTAGRAM MARKETING.

ARCHITETTURA FISICA DEL SISTEMA

Presentazione Domande di Disoccupazione Agricoli e/o A.N.F. Internet Versione 1.0

Utenti Vidia. Vidia La soluzione di videoconferenza. Quick Start Guide. 1. Come diventare utente Vidia

Uso dei cookie. Informativa estesa sull uso dei cookie

Manuale utente Soggetto Promotore Erogatore Politiche Attive

Manuale Sistema di Monitoraggio Retrofit Monofase

Dipartimento di Biologia Unità Didattica Brevi note su per i docenti a cura di G. Montesanto

Applicazione Android (v )

Cosa mi serve per avere L App Fag8?

Desktop telematico : la novità dal 1 dicembre 2016

Technical Document Release Version 1.0. Product Sheet. MediaLogger. Controllo e Gestione Dispositivi

un progetto Yes I Code Scrl P.IVA

ENAIP Trentino Centro Formazione Professionale Alberghiera Riva del Garda

MANUALE DI UTILIZZO DI POCKET YUSSFONE

GUIDA ALL'UTILIZZO DELL'APP NATIVA PER TABLET ANDROID E APPLE

Utilizzo della Piattaforma da parte dei Soggetti di per sé accreditati ai sensi dell art.1 comma 5 e 6 della Direttiva n.170/2016. Istruzioni ON-LINE

Cartelle condivise di Ateneo

Web Application per il controllo da remoto delle centrali NEXTtec

Applicazione ios (v )

Manuale NoiPA. Modifica Dati Personali

Web Application per il controllo da remoto delle centrali NEXTtec

ACCESSO ALLA POSTA ELETTRONICA TRAMITE OUTLOOK WEB ACCESS

Algoritmo. La programmazione. Algoritmo. Programmare. Procedimento di risoluzione di un problema

Scuola Professionale e Filologica Geom. F.Borgogna Vercelli

Dal sito web all applicazione mobile

Transcript:

Scuola Politecnica e delle Scienze di Base Corso di Laurea in Ingegneria Informatica Elaborato finale in Programmazione I Sviluppo di un applicazione Android per la gestione di eventi presso siti turistici Anno Accademico 2015/2016 Candidato: Bruno Capuozzo matr. N46/61

A mia madre e a Roberta

Indice Indice... III Introduzione... 4 Capitolo 1: Perché Android... 6 1.1 Android e Java... 6 1.2 Android vs ios vs Windows phone... 7 1.3 L evoluzione di Android... 8 1.4 Diffusione di Android nel mondo... 9 Capitolo 2: Napp... 11 2.1 Analisi dei requisiti... 11 2.2 Progettazione... 12 2.2.1 Use case diagram... 12 2.2.2 Sequence Diagram... 13 2.2.3 Class Diagram... 15 2.2.4 Scelta della piattaforma e del database... 16 2.3 Implementazione... 16 2.3.1 Fragment home... 19 2.3.2 Fragment musei... 20 2.3.3 Fragment eventi... 20 2.3.4 Classe Chat... 20 2.3.5 Classe Evento... 21 2.4 Le Activity... 22 2.4.1 Activity Login... 23 2.4.2 Activity DescrizioneMuseo... 23 2.4.3 Activity ChatUtenti... 24 2.4.4 Activity VisualizzaEventi... 24 2.4.5 Activity InserisciEvento... 24 2.5 Struttura del database... 24 Conclusioni... 26 Bibliografia... 27

Introduzione L utilizzo degli smartphone, i telefonini intelligenti, ha conosciuto negli ultimi anni un notevole sviluppo grazie soprattutto alle nuove tecnologie che, se da un lato hanno permesso di costruire prodotti sempre più affidabili e versatili, tanto che la telefonata è solo una delle tante funzioni possibili, dall altro hanno consentito di ridurne sensibilmente i costi, così da poterli rendere accessibili ad una fascia di acquirenti sempre più larga. Certo, l introduzione di queste funzioni ha forse reso il dispositivo più complicato da utilizzare, soprattutto per la clientela non più giovanissima, ma sicuramente si è posta come uno stimolo per gli sviluppatori nell inventare e re-inventare applicazioni sempre più efficaci ed adeguate all odierno stile di vita. Attualmente esistono differenti tipi di smartphone, caratterizzati dai diversi sistemi operativi che montano, Android, ios, RIM, Windows Phone, ciascuno dei quali con sue caratteristiche peculiari, che lo rendono più indicato per una certa utenza piuttosto che per un altra. Tra i tanti sistemi operativi presenti, uno dei principali è sicuramente Android, il cui mondo ruota tutto attorno alla parola open source. In Android, infatti, si ha libero accesso a tutti gli strumenti utilizzati dagli stessi sviluppatori del sistema e quindi il potenziale delle applicazioni sviluppate da terzi non è soggetto a limitazioni, tanto più che applicazioni native e di parti terze hanno lo stesso 4

peso. Inoltre, chiunque può sviluppare per Android senza dover acquistare software o licenze particolari. Il caso di studio del presente lavoro è appunto quello di illustrare l architettura e lo sviluppo di Napp, un app da me progettata e implementata col fine di creare uno strumento per la gestione e la visualizzazione di eventi relativi ai musei di Napoli. Entrando più nello specifico, esso può sostanzialmente essere suddiviso in due parti: nella prima cercherò di illustrare Android, i motivi per cui è, da alcuni, ritenuto migliore rispetto ad altri sistemi operativi, la sua diffusione nel mondo e la sua evoluzione del software; nella seconda, presenterò nello specifico Napp descrivendo le varie fasi che ne hanno permesso lo sviluppo. 5

Capitolo 1: Perché Android In qesto capitolo illustrerò brevemente le motivazioni che mi hanno indotto a svlippare per Android. 1.1 Android e Java Il linguaggio Java, rispetto al C, gestisce automaticamente il ciclo di vita di un applicazione e anche l allocazione della memoria, rendendo più semplice lo sviluppo. Android, inoltre, è completamente open source, quindi rende possibile reperire, modificare e ridistribuire il codice sorgente, adattandolo ad ogni dispositivo e creandone la propria versione personalizzata ed ottimizzata. E anche il sistema operativo mobile più diffuso, ha una gestione di grafica e audio di alta qualità, le applicazioni native e di terze parti sono di uguale importanza e possono essere aggiunte o rimosse senza alcun vincolo. La scelta di Android non porta, tuttavia, solo vantaggi dal punto di vista informatico, ma anche dal punto di vista economico. Pubblicare applicazioni sullo store di Android (Google Play Store) ha un costo di iscrizione di 25 euro ed è possibile programmare l app con tutti i sistemi operativi per desktop più diffusi: Windows, OS X e Linux. Scegliere ios invece comporta un costo di circa 4 volte superiore per l iscrizione all App Store e serve necessariamente un computer Mac per programmare, anche questo molto costoso. Vediamo ora, nel prossimo paragrafo, le principali differenze che distinguono i diversi sistemi operativi che dominano il mercato. 6

1.2 Android vs ios vs Windows phone Il sistema proprietario Apple è sicuramente più user friendly, cioè è più adatto ad una clientela poco abituata ad utilizzare smartphone, ma d altro canto per poter sincronizzare il telefono con il PC (scambio di foto, musica etc.) o ottenere aggiornamenti software, richiede il costante utilizzo di programmi forniti da Apple, come itunes. La libertà di poter installare qualsiasi applicazione, anche non ufficiale, rende Android migliore per gli sviluppatori, che possono così provare le loro applicazioni sui terminali senza dover per forza ricorrere ad un emulatore. Poter ottenere il codice sorgente ha come effetto la possibilità di avere sempre diverse versioni del sistema operativo ottimizzate per ogni tipo di telefono e con funzionalità che la versione originale non aveva. Una famosa distribuzione di Android modificata, detta Custom ROM, è la Cyanogen Mod. L utilizzo di una custom ROM dà all utente i privilegi di root, cioè quei permessi che consentono all utente di fare qualsiasi cosa col telefono, anche accedere o modificare risorse il cui accesso era stato impedito dalla ROM originale. Si puo` fare qualcosa di simile anche in ios tramite il cosiddetto jailbreak, che permette sì di avere nuove funzionalità, ma la licenza del sistema rimane comunque di Apple. Dal punto di vista della flessibilità, ios è molto meno personalizzabile di Android, il quale lascia maggior voce in capitolo all utente. Guardando al kernel, invece, entrambe sono basate su kernel Linux. Symbian, invece, sistema proprietario Nokia fino a poco tempo fa, è stato abbandonato e sostituito da Windows Phone, sviluppato da Microsoft. Quest ultimo ha introdotto una grande novità: le tiles. Le tiles sono delle tessere che si trovano al posto delle classiche icone e che rendono la ricerca di app e informazioni nel proprio telefono estremamente rapida. La sostanziale differenza tra i due sistemi operativi sta nel fatto che Windows Phone si concentra maggiormente sulla condivisione di informazioni su social network. Per il resto i sistemi sono quasi equivalenti, se non per il fatto che lo store di Android è sicuramente più ricco di app, motivo per il quale molta gente opta per il robottino piuttosto che per Windows Phone. 7

1.3 L evoluzione di Android Dal 2008, data della prima uscita su smartphone, ad oggi, Android è migliorato moltissimo e ha subìto grandi variazioni dal punto di vista grafico, funzionale e delle prestazioni. Si sono susseguite 53 versioni (contando anche le release minori) e 23 livelli di API, Application User Interface [1]. Le API sono un insieme di funzioni disponibili al programmatore, di solito raggruppate a formare un set di strumenti specifici per lo svolgimento di un determinato compito all interno di un certo programma. Spesso con tale termine si intendono le librerie software disponibili in un certo linguaggio di programmazione. Le release maggiori, cioè che portano grandi cambiamenti, passano da un numero ad un altro (es. da 3 a 4) mentre le release minori, correzioni di piccoli bug e piccole novità, mantengono quasi lo stesso numero di versione (es. da 4.0 a 4.1). Figura n.1 Le versioni di Android prima della 1.0 non avevano un nome identificativo ma solamente un numero di riconoscimento come m3-rc20a e m5-rc15. Per poter essere ricordate più facilmente anche dagli utenti, si decise di dare a queste due versioni dei nomi che potessero ricordare un robottino e furono rispettivamente Astro Boy e Bender. Per le versioni seguenti gli sviluppatori decisero che avrebbero invece utilizzato dei nomi di dolcetti, senza un particolare motivo, ma in ordine alfabetico. La prima di queste versioni è Cupcake, la prima che esce anche in Italia, introduce delle novità che con l evolversi del sistema operativo verranno mantenute, migliorate e considerate sempre più importanti, come i Widget e la rotazione dello schermo. Donut e Eclair non sono particolarmente 8

interessanti dato che ottimizzano solo in parte le prestazioni di Android ed infatti non sono per nulla diffuse. Froyo introduce importantissime novità nel kernel2 grazie alla Dalvik Virtual Machine (di cui parleremo più avanti) e al JIT (Just in Time compiler). Gingerbread porta solamente delle piccole migliorie, mentre con HoneyComb Google si sposta anche nel settore tablet, introducendo la grafica Holo che sarà alla base delle successive versioni per smartphone come Ice Cream Sandwich e Jelly Bean. Quest ultima versione è decisamente migliore delle precedenti grazie all implementazione del Project Butter, un iniziativa di Google per rendere il sistema più fluido. Attualmente è in corso la distribuzione dell ultima versione Marshmallow su tutti i dispositivi marcati Samsung, LG, HTC etc. etc., già presente sui nexus (dispositivi prodotti direttamente da google in collaborazione con degli OEM). 1.4 Diffusione di Android nel mondo In questi anni il robottino verde ha guadagnato moltissimi utenti e continua ad essere il sistema operativo più diffuso in europa [2]. ios, come si può notare dall immagine (fig. 2), è meno diffuso in europa rispetto ad android; ciò è dovuto principalmente al costo più elevato dei dispositivi in quanto gli attuali top di gamma possono addirittura superare i 1000. C è infatti da aggiungere che android, a differenza di ios, si trova su dispositivi appartenenti a qualsiasi fascia di prezzo e quindi non è molto difficile acquistarne uno con una modica spesa di circa 100, mentre per ios il prezzo base di un dispositivo che lo monti si aggira intorno ai 300. Per quanto riguarda windows phone, il sistema operativo più recente dei 3 principali, continua a guadagnare terreno grazie alla sua buona ottimizzazione ma resta comunque ancora il meno diffuso attualmente in europa. 9

Figura n.2 10

Capitolo 2: Napp In questo capitolo descriverò le fasi di sviluppo che mi hanno permesso di realizzare Napp partendo dall analisi dei requisiti, in cui spiegherò da un punto di vista concettuale a cosa serve e come funziona l app, per arrivare alla fase di progettazione e implementazione in cui, attraverso opportuni digrammi e codice, andrò ad analizzare più nel dettaglio gli aspetti funzionali ed implementativi dell app stessa. 2.1 Analisi dei requisiti Napp è ideata allo scopo di offrire un servizio ai turisti in visita nella città di Napoli. Essa consentirà di ricercare e ottenere informazioni inerenti ai musei presenti a Napoli come: numeri di telefono, indirizzo, tariffe, orari, eventuali chiusure o aperture straordinarie etc. Ogni museo sarà geolocalizzato su una mappa, dando così l opportunità al fruitore di ottenere le indicazioni stradali utili per raggiungere il museo prescelto semplicemente cliccando sul relativo marker. Sarà anche prevista la possibilità, previa registrazione su Napp, di interazione tra gli utenti registrati i quali, tramite una chat, potranno richiedere o approfondire informazioni sui musei di interesse, come la presenza o meno di un opera in quel particolare periodo, acquisire ulteriori notizie circa i monumenti o siti cittadini più interessanti da visitare o scambiarsi opinioni, offrire suggerimenti, dare una valutazione ai servizi ricevuti e così via. Sarà, inoltre, presente un area dedicata nella quale si troveranno tutti gli eventi associati ai vari musei. A tal proposito, tuttavia, occorre qui precisare che, poichè per l inserimento degli eventi sarà necessrio registrarsi su Napp attraverso una mail che contenga il dominio: 11

napp.it. e che attualmente tale dominio non esiste, al momento, sarà implementata solo la funzionalità per testarla. Va da sé che, una volta acquistato il dominio, l app, già predisposta, sarà perfettamente funzionante. Per visualizzare gli eventi, invece, basterà registrarsi sul portale attraverso una qualsiasi mail senza vincoli sul dominio (saranno accettati domini come @gmail.com, @hotmail.com etc. etc.). 2.2 Progettazione Per capire al meglio come ho sviluppato Napp e comprendere i requisiti del progetto analizzerò inizialmente alcuni casi d uso e successivamente, entrando più nello specifico, i sequence diagram e il class diagram. 2.2.1 Use case diagram Il caso d uso (use case diagram), in informatica, è una tecnica usata nei processi di ingegneria del software per effettuare, in maniera esaustiva e non ambigua, la raccolta dei requisiti al fine di produrre software di qualità. Vengono utilizzati per l individuazione e la registrazione dei requisiti funzionali scrivendo come un sistema possa essere utilizzato per consentire agli utenti i raggiungere i loro obiettivi. Come si può notare dalla (fig. 3) sono presenti due attori: il Turista e il Gestore. Entrambi gli attori, una volta effettuata l operazione di login, potranno accedere alle funzionalità offerte dall app come la visualizzazione degli eventi, ma solo il Gestore, loggato mediante una mail contenente il dominio napp.it, sarà abilitato all inserimento di eventi sul database. Per quanto riguarda l untente Public esso potrà solo visualizzare la mappa, dove si troveranno i musei, e la loro descrizione senza avere nè la possibilità di chiedere informazioni alla community nè la possibilità di visualizzare o insierire gli eventi nel database. 12

Figura n.3 2.2.2 Sequence Diagram Per comprendere al meglio i due use-case realtivi, l uno all inserimento di un evento e l altro alla richiesta di informazioni su un museo, analizzeremo i loro sequence diagram, riproducendo la sequenza di azioni necessarie da fare per effettuare l operazione desiderata. In figura 4 è rappresentato il sequence diagram relativo all iserimento di un elemento nel database, in figura 5 è rappresentato invece quello relativo alla richiesta di informazioni alla community. 13

Figura n.4 Figura n.5 14

2.2.3 Class Diagram Il Class Diagram presente in figura 6 mostra la struttura dell app e la relazione fra i vari componenti. Come si può notare l app è composta da 3 fragment principali i quali saranno spiegati più nel dettaglio nel paragrafo 2.3. I collegamenti tra le varie activity sono stabiliti da intent, i quali hanno il compito di richiamare l activity desiderata e renderla visualizzabile dall utente. ChatListAdapter e CustomAdapterListaEventi sono i componenti che si occupano della rappresentazione grafica dei dati per ogni elemento delle ListView a cui fanno riferimento, mentre FireBaseList adapter ha il compito di andarle a "popolare" tramite il metodo populateview. Chat ed Evento, infine, sono le due classi che servono a generare i vari oggetti, appunto chat ed evento, che saranno poi memorizzati sul database. Figura n.6 15

2.2.4 Scelta della piattaforma e del database Per sviluppare Napp ho scelto come ambiente di sviluppo Android Studio (fig.7). La scelta è ricaduta su Android Studio dato che esso è lo strumento ufficiale messo a disposizione da Google per lo sviluppo di app per android. Figura n.7 Figura n.8 Per quanto riguarda il database utilizzato per implementare la chat, l inserimento e la visualizzazione degli eventi in remoto, ho utilizzato Firebase (fig.8). Esso è un database non relazionale, molto veloce, che offre nativamente il supporto ad Android Studio. Oltre ad essere perfettamente gestito da Android Studio e supportato da Android, esso offre anche il supporto verso ios in quanto supporta perfettamente, oltre a Java, anche Swift e Objective-C. E quindi un database molto versatile, e proprio grazie alla sua versatilità sarà relativamente semplice riadattarlo all occorrenza verso ios. 2.3 Implementazione Entraimo adesso nel cuore dell app analizzando nel dettaglio il codice che ne ha permesso la realizzazione. Qui di seguito, riporto il codice relativo alla classe Principale che funge da contenitore in quanto in essa saranno visualizzati i fragments relativi alle varie pagine. 16

public class Principale extends AppCompatActivity { Intent effettualogin,effettualogout; public static class MyPagerAdapter extends FragmentPagerAdapter { private static int NUM_ITEMS = 3; public MyPagerAdapter(FragmentManager fragmentmanager) { super(fragmentmanager); // Ritorno il numero delle pagine @Override public int getcount() { return NUM_ITEMS; // Ritorno i fragment da visualizzare @Override public Fragment getitem(int position) { switch (position) { case 0: return Home.newInstance(0, "Home"); case 1: return Musei.newInstance(1, "Musei"); case 2: return Eventi.newInstance(2, "Eventi"); default: return null; // Ritorno i titoli delle pagine nell' indicatore @Override public CharSequence getpagetitle(int position) { if(position==0) return "Home"; if(position==1) return "Musei"; if(position==2) return "Eventi"; else return "Page " + position; @Override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_principale); setrequestedorientation(activityinfo.screen_orientation_portrait); ViewPager vppager = (ViewPager) findviewbyid(r.id.viewpager); vppager.setadapter(new MyPagerAdapter(getSupportFragmentManager())); PagerSlidingTabStrip tabsstrip = (PagerSlidingTabStrip) findviewbyid(r.id.tabs); tabsstrip.setviewpager(vppager); 17

@Override public boolean oncreateoptionsmenu(menu menu) { if(login.mauthdata!=null){ getmenuinflater().inflate(r.menu.logout, menu); else { getmenuinflater().inflate(r.menu.login, menu); return true; @Override public boolean onoptionsitemselected(menuitem item) { int id = item.getitemid(); if (id == R.id.action_login) { effettualogin=new Intent(getApplicationContext(), Login.class); startactivity(effettualogin); return true; else if(id == R.id.action_logout){ Login.mAuthData=null; Login.mFirebaseRef.unauth(); effettualogout=new Intent(getApplicationContext(), Principale.class); startactivity(effettualogout); return super.onoptionsitemselected(item); @Override public void onbackpressed() { Toast t=toast.maketext(getapplicationcontext(),"premi il tasto home per uscire",toast.length_long); t.show(); return; Come si può evincere dal codice, Napp è costituita da 3 fragment principali: Home Musei Eventi e da un OptionsMenu, ovvero un menù che, a seconda che l utente sia loggato o meno, consente di effettuare rispettivamente operazioni di logout e login. 18

Figura n. 9 Figura n. 10 Figura n. 11 2.3.1 Fragment home Il fragment home, come mostra la figura n. 9, è costituita da 3 elementi principali: Mappa TextView Button La mappa è gestita attraverso le API delle maps messe a disposizione da Google. In essa si trovano i marker relativi alle posizioni dei vari musei della città di Napoli. Per il momento sono stati inseriti solo 4 musei in locale per effettuare la fase di test dell app, ma in futuro potranno poi essere inseriti, sempre in locale, tutti i musei appartenenti alla città. Cliccando su un marker è possibile, attraverso il navigatore di default di Android maps, ottenere le indicazioni stradali necessarie per raggiungere il museo desiderato. La TextView fornisce una breve descrizione di Napp. Al suo interno, infatti si possono trovare descritte le funzionalità principali offerte dall app. Il Button fornisce un collegamento rapido verso la pagina di Login necessaria per poter usufruire appieno delle funzionalità di Napp. 19

2.3.2 Fragment musei Questa Activity (fig. 10) è costituita sostanzialmente da una custom ListView. Essa è una lista dei musei della città di Napoli. Anche per questa ListView valgono le stesse considerazioni fatte per la mappa, ovvero sono, al momento, presenti solo 4 musei, ovviamente correlati a quelli presenti nella mappa, necessari per effettuare la fase di testing. Cliccando su un item della lista si è indirizzati verso un activity dinamica contenente tutte le informazioni relative al museo selezionato. Ulteriori chiarimenti riguardo quasta activity si potranno trovare nel sottoparagrafo 2.4.2. 2.3.3 Fragment eventi Come si può notare nella figura n.11, il fragment eventi è costituito da una una TextView e da due Buttons, di cui uno rimanda alla visualizzazione dell activity VisualizzaEventi, per i cui approfondimenti si rimanda al sottoparagrafo 2.4.4 e l altro all activity InserisciEvento di cui al sottoparagrafo 2.4.5. 2.3.4 Classe Chat Di seguito riporto il codice relativo alla classe Chat funzionale alla creazione dell oggetto chat indispensabile per la pubblicazione dei messaggi da parte dell utente che ha superato la fase di login. public class Chat { private String message; private String author; @SuppressWarnings("unused") private Chat() { public Chat(String message, String author) { this.message = message; this.author = author; public String getmessage() { return message; public String getauthor() { return author; 20

Come si può notare dal codice, in essa troviamo i costruttori con e senza argomenti e i due metodi relativi alle variabili dell oggetto Chat, i quali ritornano rispettivamente il messaggio e l autore del messaggio mandato dall utente. 2.3.5 Classe Evento Di seguito si riporta il codice relativo alla classe Evento funzionale alla creazione dell oggetto evento: public class Evento { private String nome; private String luogo; private String dataevento; private String prezzo; private String ora; @SuppressWarnings("unused") private Evento() { public Evento(String nome,string luogo, String dataevento,string prezzo,string ora){ this.nome=nome; this.luogo=luogo; this.dataevento=dataevento; this.prezzo=prezzo; this.ora=ora; public String getnome(){return nome; public String getluogo(){return luogo; public String getdataevento(){return dataevento; public String getprezzo(){return prezzo; public String getora(){return ora; Come si può notare dal codice, in essa troviamo i costruttori con e senza argomenti e i cinque metodi relativi alle variabili dell oggetto Evento i quali ritornano rispettivamente il nome, il luogo, la data, il prezzo e l ora dell evento stesso. 21

2.4 Le Activity Illustrati i vari fragment, analizzeremo ora le activity presenti in Napp. Figura n.12 Figura n.13 Figura n.14 Figura n.15 Figura n.16 22

2.4.1 Activity Login Come già accennato nel sottoparagrafo 2.3.1, l activity Login (fig. 12) è raggiungibile attraverso il Button presente nel fragment Home e mediante l OptionsMenu presente nella Toolbar. Essa è costituita da un ImageView contentente il logo di Napp, due EditText necessarie per l acquisizione rispettivamente di email e password ed infine un Button che richiama il metodo attemptlogin() il quale effettua un tentativo di autentinticazione dell utente, e, in caso positivo, riporta l utente autenticato nel fragment Home. C è da sottolineare che le due EditText, oltre ad acquisire i dati dell utente, effettuano anche un controllo sui dati inseriti, in quanto la mail inserita deve contenere il simbolo @ e la password deve contenere almeno quattro caratteri ; nel caso in cui i vincoli imposti non dovessero essere soddisfatti sarà necessario reinserire i dati. Successivamente alla fase di login è effettuato un ulteriore controllo sulla mail dell utente, la quale, qualora dovesse appartenere al dominio napp.it, ad es. bruno@napp.it, abiliterebbe l utente ad inserire, oltre che a leggere, gli eventi attraverso l activity InserisciEvento la quale sarà discussa nel sottoparagrafo 2.4.5. 2.4.2 Activity DescrizioneMuseo Dalla ListView, appartenente al fragment Musei, cliccando sull item prescelto si è indirizzati verso un activity dinamica contenente tutte le informazioni relative al museo selezionato. Sono infatti presenti, come si vede in figura n.13, 4 elementi principali: Una ImageView, 2 TextView ed un Button a comparsa. L ImageView conterrà una foto relativa al museo selezionato in precedeza, la prima TextView, dall alto, una breve descrizione del museo stesso, e l ultima TextView che, una volta cliccata, reindirizzerà l utente verso il sito ufficiale del museo contenente informazioni relative agli orari i prezzi e i giorni di apertura. Per quanto riguarda il Button, esso non sarà visualizzabile da tutti ma solo dagli utenti che si saranno loggati su Napp. Tramite esso si sarà collegati ad una chat, gestita tramite il database in remoto Firebase, dove sarà possibile chiedere maggiori informazioni sul museo di interesse come: la presenza di un opera un feedback etc etc. 23

2.4.3 Activity ChatUtenti L activity ChatUtenti (fig.14) è composta da una TextView contenente il nome del museo selezionato, una EditText nella quale l utente andrà ad inserire il messaggio che desidera inviare, un Button che si interfaccerà con il database attraverso il metodo sendmessage() necessario per l invio del messaggio stesso, ed infine una Custom ListView la quale, aggiornandosi in maniera del tutto automatica, sia all invio che alla ricezione di un messaggio, conterrà tutti i messaggi inviati. 2.4.4 Activity VisualizzaEventi Come si può notare in figura n. 16, l activity VisualizzaEventi è costituita da una custom ListView. In essa troviamo tutte le informazioni relative agli eventi in programma dei singoli musei : nome, luogo, data, ora, prezzo. Tali eventi possono essere pubblicati, come già detto in precedenza, solo dagli utenti registrati su Napp in possesso di un indirizzo e- mail relativo al dominio napp.it. E importante sottolineare che, per poter accedere a tale lista, è necessario essere loggati ; in caso contrario, invece della ListView, si visualizzerà una TextView contente l invito a loggarsi. 2.4.5 Activity InserisciEvento L activity InserisciEvento (fig. 15) è costituita da una ImageView, da 5 EditText e da un Button. L ImageView contiene il logo dell app, i cinque EditText sono relativi rispettivamente : al nome dell evento, alla data dello stesso, al luogo in cui si verifica, all ora e all eventuale prezzo ; il Button si interfaccia con il database, attraverso il metodo inseriscievento(), e consente la pubblicazione, qualora i campi degli EditText siano stati tutti correttamente compilati, dell evento. 2.5 Struttura del database Come già accennato in precendenza, per effettuare la fase di testing dell app ho scelto di utilizzare il database Firebase. In esso non vi sono tabelle né record, nessuna traccia dell approccio relazionale. 24

Tutti i dati inseriti in Firebase vanno a costituire un albero JSON. Esso contiene sia le chat relative ai singoli musei che gli eventi inseriti dai vari gestori. In figura n. 17 è possibile notare come ho strutturato il database e come vengono memorizzati gli oggetti chat ed evento. Si evince dalla seguente figura la corrispondenza che c è tra i dati inseriti nel database e quelli presenti nelle activity: VisualizzaEventi e ChatUtenti. Figura n. 17 25

Conclusioni Lo sviluppo di un applicazione su mobile per turisti, s inserisce nel più ampio concetto di Smart Cities, concetto questo, che sta guadagnando sempre più importanza. Anche se la maggior parte delle città vogliono essere Smart, non esiste una definizione condivisa di cosa questo significhi. Una Smart City è, infatti, più di una città digitale: è quella che è capace di legare il capitale fisico (infrastrutture) con quello sociale (umano e culturale) e capace di sviluppare servizi migliori, integrati, condivisi e innovativi. Deve quindi integrare tecnologia, informazione e visione politica in un programma coerente di miglioramenti urbani e dei servizi. Napp, così come ideata e sviluppata nelle sue funzionalità sembra rispondendere a questi requisiti non solo per il suo stato attuale ma anche per quelle potrebbero essere i suoi futuri arricchimenti, come la sua predispodizione nativa per offrire uno strumento di supporto alle guide turistiche, o la sua eventuale e futura interazione con altre apps. 26

Bibliografia [1] https://it.wikipedia.org/wiki/android [2] http://tech.everyeye.it/articoli/speciale-android-ios-e-windows-phone-quanto-sonodiffusi-27417.html 27