Mobila applikationer med Android: Hemtentamen 2014-01-18

Det här är hemtentan som går lördag 18 januari 2014 i kursen Mobila applikationer med Android. Ansvarig lärare är Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se), telefon 070-73 47 013.

Instruktioner

  1. Skriv och provkör programmet som beskrivs i uppgiften, och skicka sen in det färdiga programmet till mig (thomas.padron-mccarthy@oru.se) senast klockan 08:00 söndag 19 januari 2014.
  2. Uppgiften ska lösas enskilt, dvs inga grupper av två eller flera studenter.
  3. Du får använda dator, böcker och vilka andra hjälpmedel som helst, men du får inte samarbeta eller fråga någon (utom mig).
  4. Om du behöver fråga något, så kontakta gärna mig. Det är nog bäst att ringa eller SMS:a, för jag kommer kanske inte att sitta vid datorn.
  5. Packa ihop hela katalogen med applikationen i en Zip-fil, och skicka den som en bilaga. (Även rar- och tar-filer fungerar.) APK-filen (Androids kompilerade installationsfil) ska vara med. Men döp först om Zip-filen från nånting.zip till exempelvis nånting.info för att överlista överambitiösa virusfilter.
  6. Om du inte senast under måndagen får e-post från mig med en bekräftelse på att du skickat in uppgiften, bör du kontakta mig, enklast genom att ringa eller SMS:a mig (ifall det är e-posten som inte fungerar).
  7. Godkänt resultat på den här hemtentan ger betyget G på teoridelen av kursen. För att få hela kursen godkänd krävs dessutom godkända inlämningsuppgifter.

Uppgiften

Vanliga persondatorer i hem och på kontor står den allra mesta tiden still och gör ingenting. SETI@home och Folding@home är exempel på "Volunteer computing", som är projekt där månniskor upplåter sina datorers lediga kapacitet till att jobba med olika beräkningsprojekt.

Nu ska vi göra samma sak med Android-enheter. Det ska fungera genom att telefonen (eller vad man nu har för Android-enhet) kopplar upp sig mot en server och laddar ner ett beräkningsproblem, utför beräkningen, och slutligen kopplar upp sig mot servern igen och meddelar resultatet.

Jag kör en server på basen.oru.se.

Kommunikationsprotokollet

Klienten kopplar upp sig med en socket mot serverns port 2006. Servern svarar då med "DistributedCalculationsServer version", till exempel "DistributedCalculationsServer 0.1".

Därefter kan klienten skicka två olika kommandon. Alla data mellan klient och server skickas som strängar, med varje kommando och varje svar på en egen rad.

Klienten skickar Servern svarar Exempeldialog
GET SOLVE problemnummer problemet Klienten: GET
Servern: SOLVE 4711 3.8 + 2.5
SOLVED problemnummer resultat THANKS Klienten: SOLVED 4711 6.3
Servern: THANKS
något annat ERROR Klienten: hej hej
Servern: ERROR

Efter att servern skickat sitt svar, kopplar den ner förbindelsen.

På riktigt skulle det vara ganska stora och tidskrävande beräkningar som delades ut av servern för klienterna att lösa, men här nöjer vi oss med de fyra räknesätten (+, -, * och /) som ska användas på två tal.

Krav

Tips


Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se), 17 januari 2014