YCILT (Your City Is Listening To) è un'applicazione Android sviluppata in Kotlin con Jetpack Compose per il corso di Laboratorio di Applicazioni Mobili. Permette agli utenti di scoprire la musica dal vivo intorno a loro su una mappa interattiva, registrare e caricare audio, ed esplorare un'analisi musicale dettagliata.
Realizzata con architettura MVVM, WorkManager per i task in background, Geocoder per il geocoding inverso, e compatibile con SDK 33+ (Android 13+).
Il cuore di YCILT e' una mappa interattiva Google Maps. Ogni marker rappresenta una registrazione audio pubblica caricata dagli utenti nella zona. I marker si aggiornano ogni 5 secondi per mantenere la mappa sempre attuale. Tocca un marker per visualizzare le informazioni dettagliate sulla registrazione.

Cattura i suoni intorno a te con il registratore integrato. Una volta salvato, l'audio viene messo in coda per l'upload tramite un Worker in background che attende una connessione Wi-Fi — cosi' non sprechi dati mobili. Una notifica ti tiene informato sullo stato dell'upload.

Accedi alla tua libreria personale dal drawer laterale. Ogni registrazione mostra nome file, data e durata. Toccane una per riprodurla, vedere dove e' stata registrata (tramite geocoding inverso), cambiarne la privacy tra pubblica e privata, o eliminarla.


Il backend analizza ogni registrazione caricata, estraendo metadati dettagliati: BPM, danceability, loudness, piu' le 5 opzioni piu' probabili per mood, genere e strumenti. Questo trasforma un semplice file audio in un'impronta musicale completa.

Gli utenti si registrano e accedono con un'interfaccia pulita e minimale. Il token di autenticazione e' salvato nelle SharedPreferences, cosi' resti loggato tra una sessione e l'altra. Un drawer laterale offre accesso rapido ai tuoi upload, logout e cancellazione dell'account.

