android-vinyla - 2022
- Screenshots van de applicatie:
Welkom scherm: de gebruiker wordt begroet door een welkom scherm met een
willekeurige achtergrond van albumhoezen.
Login en registreer scherm: alle gegevens zoals wachtwoord- en
emailvereisten worden gecontroleerd. Ook een al gebruikt emailadres kan
niet meer gebruikt worden.
Hoofd scherm: de gebruiker kan meerdere artiesten aanduiden en
vervolgens klikken op 'create station'. De streamingservice kan
ingesteld worden via de instellingen knop.
- Doel van de app:
De bedoeling is om met een eenvoudige login je favoriete artiesten te
zien in een handige lijst. Deze data haal ik uit mijn vorige project,
vinyla, van het vak webapplicaties IV.
De gebruiker kan meerdere artiesten aanduiden door op de foto van een
artiest te drukken. Vervolgens kan de gebruiker ervoor kiezen om een
persoonlijk station / playlist af te spelen van de gekozen artiest(en).
Hiervoor verwijst de app automatisch naar door de gebruiker gekozen
muziek-streaming app. Deze kan worden ingesteld via de instellingen
knop.
- Hoe vinyla voor Android werkt:
Origine vinyla:
Voor het vak Webapplicaties IV had ik een databank, API en webapplicatie
geschreven waarbij de gebruiker zijn / haar favoriete albums kan
opzoeken en toevoegen als favoriet, om er zo een mooi overzicht van te
kunnen hebben.
Deze kan u hier terugvinden.
API's:
De applicatie maakt gebruik van 3 verschillende API's om zo tot het
einddoel te komen:
-
vinyla-API: zelfgeschreven om de gebruiker zijn / haar favoriete
albums op te halen.
-
Spotify-Token-API: een Spotify API om een vertrouwde token te kunnen
ontvangen. Deze token is nodig om gebruik te maken van de volledige
Spotify-API in stap 3.
-
Spotify-API: een andere Spotify API om met een query de foto's op te
halen van de gezochte artiesten.
Werkwijze app:
- Gebruiker logt in met zijn / haar logingegevens.
-
De app communiceert met vinyla-api om te controleren of de
logingegevens correct zijn en krijgt een BearerAuth Token terug.
-
Er wordt gecommuniceert met de Spotify-Token-API om een vertrouwde
BearerAuth Token te krijgen van Spotify.
-
Met de vinyla-token worden alle favoriete albums van vinyla gehaald.
-
Aantal albums worden gefilterd per artiest, gesorteerd op hoe vaak een
album van een artiest voorkomt. Deze lijst wordt gelimiteerd tot
maximaal 30 artiesten.
-
Aangezien Spotify een limiet heeft gesteld van batch-requests worden
alle artiestenfoto's één voor één opgehaald van Spotify-API, samen met
de Spotify-token.
-
De gebruiker stelt zijn / haar favoriete muziekstreamingdienst in via
de instellingen knop.
-
De gebruiker duidt enkele artiesten aan en klikt vervolgens op de
'create station' knop om zo een persoonlijk station te ontvangen op
zijn / haar gekozen steamingservice. (Het effectief afspelen van de
muziek is niet geïmplementeerd.)
- Vereisten opdracht die toegelicht kunnen worden:
-
UI opbouw: Er werd zoveel mogelijk gewerkt met recyclerviews zodat het
scherm altijd wordt aangepast naargelang de schermgrootte. Daarnaast
zijn er ook vele navigaties geanimeerd.
-
UI technisch: Er worden binding adapters en gewone binding gebruikt.
Er werd voor gezorgd dat de app een unieke en mooie look & feel
heeft.
- Testing: Alle fragments worden getest met behulp van Espresso.
-
Codekwaliteit: De meeste functies zijn onderverdeeld in kleinere
subfuncties om de code duidelijker te maken. Daarnaast werden de
meeste functies uitgelegd door boven de functies annotaties te
schrijven.
-
Lifecycle: Aangezien de applicatie geen gebruik maakt van CPU-heavy
animaties werd er weinig gebruik gemaakt van een custom lifecycle.
Enkel bij de onResume van het welkom scherm wordt er gecontroleerd of
de applicatie alreeds een ingelogde gebruiker heeft door de Room
Database te controleren.
-
Netwerk: Er worden heel wat API-calls gebruikt met behulp van
Retrofit, namelijk naar vinyla-api, spotify-token-api &
spotify-api.
-
Persistentie: De applicatie is voorzien van een Room Database die de
gebruiker zelf opslaat en de instellingen die werden gekozen door de
gebruiker. Deze worden automatisch opgehaald bij het openen van de
app.
- Testen:
Alle schermen worden getest met behulp van het Espresso framework.
Onderliggende code zonder de schermen effectief te gebruiken zijn niet
gelukt om te testen.
De welcomeFragmentVisible test werkt alleen wanneer deze als eerste
wordt uitgevoerd. Anders denkt de applicatie dat er al een gebruiker is
ingelogd en wordt het welkoms scherm niet weergegeven.
Eerste designs:
Designs gemaakt in Figma met de UI van iOS maar zijn geprogrammeerd voor
Android.