GeoScore er en Android-applikasjon utviklet i IN2000 ved Universitetet i Oslo. Appen gir brukeren en samlet vurdering av naturfare og klimarelaterte forhold for en valgt adresse eller lokasjon.
Applikasjonen kombinerer kart, historiske værdata, flom- og skredinformasjon, lokale beregninger og en AI-generert rapport for å gi brukeren en mer forståelig vurdering av risiko knyttet til blant annet vind, nedbør, flom og skred.
Se en kort demo av hovedflyten i appen (trykk på bildet):
Videoen viser blant annet:
- søk etter adresse/lokasjon
- visning av valgt sted i kart
- beregning av GeoScore
- visning av rapport og klimadata
- bruk av lagrede steder
Appen er ikke publisert i Google Play Store.
Den kan kjøres på to måter:
- ved å installere en tilsendt APK-fil
- ved å åpne prosjektet i Android Studio og kjøre appen fra kildekode
- Klon repositoryet.
- Åpne prosjektet i Android Studio.
- Sørg for at Android SDK 24 eller nyere er installert.
- Bygg og kjør appen på emulator eller fysisk Android-enhet.
I den opprinnelige IN2000-innleveringen ble API-nøkler lagt direkte inn i prosjektet etter avklaring med gruppelærer, for å gjøre sensur og kjøring enklere.
For videreutvikling eller offentlig bruk bør API-nøkler ikke hardkodes. De bør heller legges i for eksempel:
- local.properties
- Gradle secrets-plugin
- miljøvariabler
- annen sikker konfigurasjon som ikke sjekkes inn i Git
- Android SDK 24 eller høyere, tilsvarende Android 7.0+
- Internett-tilkobling
Appen krever ingen spesielle tillatelser utover tilgang til internett.
- Kotlin – hovedspråk
- Jetpack Compose – brukergrensesnitt
- Material 3 – designkomponenter
- Navigation 3 – navigasjon mellom skjermer
- Hilt – dependency injection
- Room – lokal database og caching
- Kotlinx Coroutines – asynkron programmering
- Kotlinx Serialization – serialisering/deserialisering av data
- Coil – bildehåndtering
- Google Maps Compose – kartvisning
- Compose Charts – visualisering av historiske klimadata
- JUnit – testing
- OpenAI API – generering av tekstlig rapport og forklaringer
- Kotlin Serialization – gjør det mulig å bruke @Serializable
- Kotlin Parcelize – gjør det mulig å bruke @Parcelize
- KSP – Kotlin Symbol Processing, blant annet brukt av Room/Hilt
- Hilt Gradle Plugin – dependency injection-oppsett
Prosjektet kan gi enkelte IDE-varsler, blant annet:
- noen deprecated-metoder som følge av bibliotekoppgraderinger
- én verdi som blir tilordnet, men ikke lest direkte
Disse varslene påvirker ikke hovedflyten i appen slik prosjektet ble levert, men bør ryddes opp i ved videreutvikling.
Ved bruk av Google Maps kan LogCat vise flere interne advarsler og Flogger-meldinger. Etter testing ser disse ut til å komme fra Google Maps sin interne implementasjon og ikke fra appens egen logikk.
Det kan også forekomme enkelte frame skips, spesielt på kartskjermen, siden Google Maps er et relativt tungt UI-element.
- Knappen for å laste ned lagrede rapporter er ikke ferdig implementert.
- Enkelte deler av appen er laget som en prototype/MVP og bør videreutvikles før eventuell produksjonssetting.
- David Hovde
- Jurius Abdo
- Matilda Wold Dahl
- Philip Fleischer
- Veronica Corsepius Melen
- Victoria Reinseth-Tollefsen