WIKI APP ANDROID - matteocaiazzo/APPLICAZIONEESAME GitHub Wiki

Welcome to the APPLICAZIONEESAME wiki!

RunAppNapoli e' un app sviluppata da Matteo Caiazzo,Riccardo Bracale e Francesca Costantino avente lo scopo di fornire informazioni utili agli appassionati di Running della citta di Napoli.

L'app e' composta di 6 activity e 3 classi utilizzate come supporto per le suddette activity.

ACTIVITY MAIN

La main activity dell'app e' composta da una classe MainActivity che ha due compiti principali:

1)Gestire i dati necessari alla visualizzazione dei dati metereologici (Temperatura,Umidita' e Pressione).

*I dati vengono ottenuti effettuando una richiesta HTTP al sito OPEN WEATHER MAP che, previa creazione di una API KEY ad hoc, ci fornisce aggiornamenti orari sulle condizioni meteo della citta' scelta.Per creare una socket con OPEN WEATHER MAP e' stato necessario includere nel MANIFEST dell'applicazione l'abilitazione dei permessi "INTERNET" e "ACCESS_NETWORK_STATE".Dopo aver selezionato la citta' di cui si vuole conoscere le condizioni meteo (La citta' predefinita e' Napoli), la classe DownloadWeather effettua una GET verso l'url "http://api.openweathermap.org/data/2.5/weather?q=" + args[0] + "&units=metric&appid="+ OPEN_WEATHER_MAP_API). Se la richiesta va a buon fine, viene creato un file JSON contenente le informazioni richieste. I campi del file JSON vengono poi elaborati e visualizzati dai metodi SetText

2)Passare all'activity Home attraverso il button START.Il passaggio all'activity Home viene effettuato utilizzando un listener relativo al bottone start e sfruttando il meccanismo degli Intent

ACTIVITY HOME

La Home Activity dell'app e' composta dalla classe HomeActivity che ha il compito di guidare l'utente nella scelta della funzione di cui si vuole usufruire. La schermata si presenta con una lista di 4 Button che rimandano alle omonime Activity: LUOGHI,MAPS,CONTAPASSI e FREQUENZA CARDIACA. Anche in questo caso il passaggio dalla HomeActivity alle altre Activity viene effettuato sfruttando il metodo SetOnClickListener e gli Intent.

ACTIVITY LUOGHI

La Luoghi Activity dell'app e' composta dalla classe LuoghiActivity che ha lo scopo di fornire le informazioni riguardanti Orari,Contatti,Servizi e Siti web dei luoghi di Napoli in cui e' possibile fare Running. I dati vengono caricati nelle text view a seguito della scelta dell'utente del luogo di cui si vogliono avere le informazioni. Questa funzione viene implementata attraverso l'utilizzo di uno SPINNER (utilizzabile a seguito dell'import del android.widget.Spinner) e di costrutti di controllo IF.

ACTIVITY MAPS

La Maps Activity dell'app e' Basata sulla MapsActivity fornita di default da android studio.Dopo aver creato ed incluso l'API KEY al manifest, e' stata impostata la posizione di Napoli come posizione predefinita e sono stati aggiunti dei marker contenenti longitudine e latitudine dei luoghi inseriti nella LuoghiActivity (attraverso il metodo addMarker). E' inoltre stata abilitata la funzione Navigatore che rimanda all'app di google maps.

ACTIVITY CONTAPASSI

L'Activity Contapassi permette di avere un monitoraggio istantaneo del numero di passi effettuati. L'algoritmo implementato sfrutta il sensore STEP COUNTER per calcolare il numero di passi effettuati. L'activity prevede inoltre la visualizzazione del numero di passi totali effettuati nella giornata. L'algoritmo effettua un check sull'orario del telefono in modo che ogni mezzanotte il numero totale dei passi effettuati si azzera.

ACTIVITY BPM

L'Activity Bpm sfrutta la fotocamera dello smartphone per calcolare il numero di battiti al minuto. Grazie all'utilizzo del flash e' infatti possibile illuminare il dito dell'utente in modo che la fotocamera riesca a catturare il passaggio del sangue che avviene per ogni battito. Nel layout dell'activity e' stata implementata una SurfaceView che permette all'utente di posizionare in modo corretto il dito sull'obiettivo cosicche l'algoritmo per il calcolo del bpm possa lavorare al meglio. L'icona al di sotto della SurfaceView diventa rossa ogni qual volta viene rilevato il battito. L'algoritmo presenta un meccanismo di controllo che annulla il calcolo nel caso in cui il risultato della misura sia inverosimile (le soglie sono 30 e 180 bpm). Per utilizzare la camera e' stato necessario includere nel MANIFEST dell'applicazione l'abilitazione dei permessi (sia Hardware che software) di CAMERA, FLASH e STORAGE. SI NOTI CHE, in quanto considerati critici, questi permessi devono essere abilitati MANUALMENTE nelle impostazioni dell'app.

FUNCTION DI SUPPORTO

Oltre alle Activity descritte in precedenza, nella cartella java dell'app sono presenti tre function di supporto:

  1. FUNCTION e' una classe java di supporto all'Activity Main che effettua il check della connessione http verso open weather mapp e mostra l'icona relativa alla condizione meteo corrente (le varie icone sono salvate nella cartella assets->fonts)

  2. HeartbeatPic e ImageProcessing sono due classi java di supporto all'Activity Bpm. Risulta di particolare importanza la seconda classe che si occupa del processing dell'immagine catturata dalla fotocamera. A seguito di un analisi del quantitativo di rosso presente nel frame, il decisore della classe controlla se ci sia stato o meno un battito