Endomondo: Sådan lavede vi Danmarks bedste Android-applikation
Danmarks bedste Android-applikation hedder Endomondo Sport Tracker, og udvikleren bag fortæller her om de teknologier, der får fitness-applikationen til at køre derudaf.
Af
Mikkel Meister ,
fredag 05. feb 2010 kl. 15:19
EMNER:
Java
Smartphones
Android
It-udfordringen. (Grafik: Lars Refn)
Version2 og HTC kårede fredag vinderen af konkurrencen om Danmarks bedste Android-applikation, og det var fitness-applikationen Endomondo Sport Tracker, der kom øverst på sejrsskamlen.
Endomondo Sport Tracker kan kortlægge brugerens rute på for eksempel løbe- eller cykelturen og sende data op til en hjemmeside, så andre fitnessentusiaster kan følge med i strabadserne.
Softwareudvikler Jesper Majland, Endomondo, står bag applikationen, og han forklarer her, hvordan den er strikket sammen.
Hvad er din rolle i projektet?
»Jeg har været udvikler på Endomondo Sport Tracker og har stået for al koden til applikationen.
Jeg har brugt to-en-halv måned på det, og det synes jeg er ret hurtigt, i forhold til at jeg er startet helt fra bunden af og ikke havde kodet Java professionelt før.
Det skyldes nok, at Android-API’et (programmeringsinterfacet, red.) og frameworket er så godt, som det er. Jeg tror, at Google er kommet med et rigtigt godt bud på alternativ til de andre store produkter på markedet.«
Jesper Majland, softwareudvikler hos Endomondo og manden bag Endomondo Sport Tracker. (Privatfoto)
Hvilke teknologier bruger du?
»Jeg har brugt Java, som jo er det programmeringssprog, man bruger til Android-platformen. Og så har jeg brugt udviklingsmiljøet Eclipse på en Windows-maskine.
Applikationen bruger Google Maps til at vise landkort og satellitfotos og telefonens GPS til at finde ud af, hvor man er henne i verden.
Data gemmes internt i en SQLite database på telefonen, som findes i selve Android-frameworket. Databasen bruger jeg til at holde styr på, hvad der er sket under træningen. Jeg prøver så vidt muligt at undgå at bruge temporær hukommelse, da telefonen jo kan løbe tør for batteri, og det har jeg ingen idé om, hvornår sker. De nye positioner, der gemmes i databasen, læses og sendes videre én gang i minuttet til vores webserver, hvor andre så kan se, hvordan træningen skrider frem.
Applikationen består af én hovedaktivitet, som kører på selve UI-tråden (den centrale tråd i alle Android-applikationer, red.). Derudover opretter jeg en baggrundstråd, som tager sig at alle de ting, der sker, når man starter et workout. Den står for at tælle sekunder, positionen på GPS’en og for at snakke med SQLite-databasen.
Derudover har jeg en anden baggrundstask, som én gang i minuttet sender nye data fra databasen til webserveren.
Jeg har generelt prøvet at holde applikationen så simpel som muligt, men det er klart, at den også skal kunne nogle ting.«
Hvilke problemer har du oplevet?
»Vi regnede fra begyndelsen med, at HTC Tattoo (Android-telefon fra HTC, red.) ville blive en storsællert, fordi den er relativt billig, så derfor købte vi et eksemplar og begyndte at designe til den.
Det viste sig hurtigt, at Tattoo’s display hverken var HVGA eller QVGA (to gængse Android-skærmstørrelser, red.), men en mellemting. HTC oplyser selv, at det er en QVGA, men i praksis har skærmen klart flere pixels, og derfor begyndte jeg at designe efter, at skærmen var lige så bred, men lidt kortere end HVGA.
Det resulterede i, at jeg i begyndelsen ikke kunne se applikationen på Android Marked, fordi manifest-filen (fil til at angive diverse regler for applikationen, red.) ikke indeholdt de rigtige permissions. Det blev dog løst ved at skrive koden til version 1.6 af Android-API’et, hvor de nye skærmstørrelser er understøttet.
Et andet problem er, at jeg godt kan få den sidst kendte position fra GPS’en, men ikke kan bede om at få den aktuelle status på GPS’en at vide. Det betyder, at man godt kan sige, at man vil modtage GPS-data, men man kan ikke selv bestemme, om man kun vil have dem, når der for eksempel er mindst fem satellitter til rådighed. Det er ikke et stort problem, for normalt holder præcisionen sig inden for en procent, men der har været eksempler på, at applikationen har talt en helt forkert distance.«
Hvilke gode råd kan du give videre?
»Sørg for at have mindst én, og gerne flere telefoner at teste applikationen på, da telefonerne ikke er ens.
Derudover skal man være opmærksom på, at Android-API’erne ændrer sig utroligt hurtigt, og man skal være klar over, at applikationen ikke vil virke fuldstændigt på alle telefoner, hvis man kaster sig ud i at skrive ny funktionalitet fra for eksempel version 2.1 af API’et ind i den.
Samtidig er det en god idé at bruge standardkomponenterne i Android-frameworket, fordi de er gennemtestede og virker på alle versioner af platformen.«
It-udfordringen er Version2's serie, der hver uge dykker ned i et aktuelt dansk it-projekt.