Anno Accademico: 2025-2026
Tecnologie usate: Kotlin + Jetpack Compose
- Target emulatore: Dispositivo virtuale Android ("Medium Phone" in Android Studio) con API 37.0.
- ViewModel & SavedStateHandle: Separazione della logica di business dalla UI. Lo stato del
gioco è interamente preservato tramite
SavedStateHandleper garantire la continuità della sequenza del computer anche durante i cambi di configurazione hardware (rotazione Portrait/Landscape). - Efficienza nella gestione delle Risorse: Uso di
collectAsStateWithLifecycle()per leggere variazioni di stato, prevenendo leak in background. Inoltre, viene fatto un monitoraggio attivo del ciclo di vita (Lifecycle) controllando il flagisChangingConfigurationsper distinguere i cambi di formato visivo (non distruttivi per l'app) dalle messe in background (sospensione delle coroutine). - Sintesi Audio Low-Level: Generazione d'onda sinusoidale e additiva nativa in formato PCM a
16-bit tramite
AudioTrack, evitando dipendenze esterne. Le onde hanno rampe di dissolvenza logaritmica (fade-in/out) per garantire un'alta fedeltà e stabilità del suono ai click rapidi, rispettando il feeling retro del gioco. - Persistenza: Salvataggio asincrono della cronologia dei match interamente basato sul framework Room Database.
Si segnala che durante l'esecuzione su un emulatore, a causa dell'overhead intrinseco di virtualizzazione del sottosistema audio lato hardware, potrebbero verificarsi isolati fenomeni di latenza o micro-clipping acustico (apparente " gracchiare"). I test effettuati su dispositivi fisici reali confermano invece una riproduzione audio perfetta e priva di latenza, fedele alle note calcolate matematicamente dal sistema.