Mobila applikationer med Android: Hemtentamen 2012-05-26

Det här är hemtentan som går lördag 26 maj 2012 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 27 maj 2012.
  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 jag kommer troligen inte att sitta 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 på måndag morgon fått 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

För att underlätta för honom själv har läraren tänkt sig att automatisera tentan. Därför ska du göra en Android-app där du själv kan koppla upp dig mot en server och skicka in att du är klar:

Bla bla bla

(Observera: Det som gör att man blir godkänd på tentan på riktigt är inte att man kört appen och använt den för att rapportera sig själv som godkänd. Det som gör att man blir godkänd på tentan är att man mailat in appen, med källkod. Man blir inte heller underkänd om servern, eller nätverket, krånglar. Men kör i alla fall appen och rapportera in dig själv, så får jag en färdig och någorlunda korrekt lista på alla godkända.)

Om man klickar på Skicka!-knappen, ska appen koppla upp sig mot port 2005 på servern basen.oru.se och skicka en textrad på formatet "KLAR:personnummer:namn" alltså till exempel så här:
KLAR:631211-1658:Bob Hammarkarlsson

Servern kommer att svara med en egen textrad. Den ska visas på skärmen, antingen som en egen skärmbild eller på samma skärmbild:

Bla bla bla

Efter att ha tagit emot textraden från servern, ska appen koppla ner sin uppkoppling.

Om man klickar på Klar?-knappen, ska appen koppla upp sig på samma sätt, men skicka en textrad på formatet "KOLLA:personnummer:namn" alltså till exempel så här:
KOLLA:631211-1680:Lisa Hammarkarlsson

Även nu kommer servern kommer att svara med en egen textrad, som också ska visas på skärmen, antingen som en egen skärmbild eller på samma skärmbild:

Bla bla bla

Observera att varje tryck på Skicka! respektive Klar! ska ge en uppkoppling och en nerkoppling. Appen ska alltså inte ligga kvar och vara uppkopplad mot servern.

Appen behöver inte spara något mellan programkörningar. Den behöver heller inte kunna kontrollera formatet på indata, utan bara skicka det vidare till servern. Däremot ska den ge ett tydligt, informativt och rättvisande felmeddelande om uppkopplingen mot servern misslyckas. Programmet får inte krascha. Det gör inget om ÅÄÖ i kommunikationen blir konstiga tecken.

Ibland kan det ta ganska lång tid (tiotals sekunder) att koppla upp sig mot en server, och att få svar från servern. Om det är GUI-tråden som sköter allt det jobbet, ser det ut som att appen hängt sig. Det är inte ett krav att programmet ska hantera det problemet på ett snyggt sätt, men det bör naturligtvis göra det.

Om det av någon anledning inte går att koppla upp sig mot servern på basen.oru.se, kan man köra den här reservservern på sin lokala maskin: Reservtentaserver.java
(Den reservservern kan bara hantera en enda uppkoppling, och måste startas på nytt efteråt.)


Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se), 25 maj 2012