Mobila applikationer med Android: Hemtentamen 2013-01-12

Det här är hemtentan som går lördag 12 januari 2013 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 13 januari 2013.
  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 (se mobilnumret ovan), för det är inte säkert att jag sitter vid datorn under lördagen.
  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) måste 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

Om man vill fjärrstyra något via ett datornät spelar det ibland stor roll vilken fördröjning man har i nätet. Nu vill vi mäta den fördröjningen. Därför kör vi på servern basen.oru.se ett serverprogram som vi kan skicka PING-kommandon till. Servern svarar med PONG, och så mäter vi tiden det tog att få svaret. Vi ska skriva en Android-app för det.

För att samla uppgifterna om de uppmätta tiderna på servern, finns även ett REPORT-kommando som klienten kan använda för att skicka en rapport till servern.

Servern kan även laddas ner här, som en zip-fil, så att man kan köra den lokalt: ReadyPingBounceServer.zip. Det kan vara bra, till exempel om nätverket krånglar. (Servern är inte en Android-app, utan en Java-applikation för vanliga skrivbords-Java.)

Kommunikationsprotokollet är enkelt. Klienten kopplar upp sig mot servern på port 2003 och skickar kommandon i form av textrader. Klienten kan skicka HELLO, och då svarar servern med HELLO. Klienten kan skicka BYE, och då svarar servern med BYE samt kopplar ner förbindelsen. Klienten kan skicka PING följt av ett meddelande på samma rad, och då svarar servern med PONG och samma meddelande. Klienten kan skicka REPORT följt av ett meddelande på samma rad, och då svarar servern med REPORT OK, samt sparar det meddelandet på en fil.

Rättelse: Servern svarar på REPORT-kommandot med REPORT OK. Tidigare stod det att servern svarar med enbart OK.

Sammanfattning av protokollet:

Klienten skickar Servern svarar Exempeldialog
HELLO HELLO Klienten skickar: HELLO
Servern svarar: HELLO
BYE BYE Klienten: BYE
Servern: BYE
PING meddelande PONG meddelande Klienten: PING 117
Servern: PONG 117
Klienten: PING smurf tjohej
Servern: PONG smurf tjohej
Klienten: PING
Servern: ERROR
REPORT meddelande REPORT OK Klienten: REPORT count = 100; avg = 42.61;
Servern: REPORT OK
Klienten: REPORT bludderudd
Servern: REPORT OK
Klienten: REPORT
Servern: ERROR
något annat ERROR K: hej hej
S: ERROR

Här är ett exempel på hur appen kan se ut, även om detta är en mer ambitiös lösning än vad som krävs för godkänt (klicka på bilden för att se den i större format):

Exempel på en lösning.

Krav

Den absolut minsta dialog med servern som behövs för godkänt på uppgiften följer det här mönstret:

Klienten: PING 1
Servern: PONG 1
Klienten: REPORT time=76
Servern: REPORT OK

Tips


Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se), 12 januari 2013