Det här är hemtentan som går lördag 19 januari 2019 i kursen Mobila applikationer med Android.
Ansvarig lärare är
Thomas Padron-McCarthy
(thomas.padron-mccarthy@oru.se),
telefon 070-73 47 013.
Instruktioner
-
Skriv och provkör programmet som beskrivs i uppgiften,
och skicka sen in det färdiga programmet till mig
(thomas.padron-mccarthy@oru.se)
inom 24 timmar, dvs senast klockan 08:00 på söndagen.
-
Obs!
Det har varit mycket problem med mailen på sistone.
Om du inte vet att det fungerar att skicka arkivbilagor från ditt e-postkonto,
kan det vara bättre att skicka in bilagan via
Blackboard
eller någon lagringstjänst som
Google Drive.
Skicka ett kort vanligt e-brev också och berätta var svaret finns.
-
Obs!
Blackboard kommer att vara nere under stora delar av lördagen.
Den ska komma igång igen klockan 19:30 på kvällen.
-
Uppgiften ska lösas enskilt, dvs inga grupper av två eller flera studenter.
-
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).
Exempelvis är det tillåtet att söka och läsa på webbplatser som Stack Overflow, men inte att ställa egna frågor.
-
Om du behöver fråga något, så kontakta gärna mig.
Det är nog bäst att skicka ett SMS,
för jag kommer inte att sitta vid datorn hela tiden,
och jag kanske inte alltid kan svara i telefon.
-
Exportera Android Studio-projektet (eller motsvarande)
som en Zip-fil (eller motsvarande)
och skicka den till läraren.
Under menyvalet File kan man välja Export to Zip File.
-
Skicka också med APK-filen (Androids kompilerade installationsfil).
Den finns normalt i underkatalogen
app/build/outputs/apk.
-
Om du inte senast på måndagen 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).
Tänk på att en del mailtjänster (särskilt Hotmail.com, Outlook.com, Live.com)
ibland kastar bort brev med bilagor, utan att meddela det.
-
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
Åh nej! Fiket är stängt!
Om jag bara vetat om att det var stängt kunde jag gått
direkt till Pressbyrån i stället:
Därför ska vi göra en app för att kolla öppettider.
Tanken är att en server ska hålla reda på öppettiderna,
och appen ska kunna koppla upp sig mot den servern och fråga
om en viss butik är öppen.
Dessutom ska man kunna använda appen för att meddela
servern om butiken är öppen.
Så här skulle appen kunna se ut
(om man är lika dålig som jag på att göra en snygg design):
Om man vill kontrollera om Pressbyrån är öppen,
skriver man in "Pressbyrån" som affärens namn,
och klickar på knappen ÄR DEN ÖPPEN?.
Appen kopplar upp sig mot servern,
frågar servern om Pressbyrån är öppen,
och skriver ut svaret den får:
Dessutom kan man själv rapportera om ifall
affären är öppen eller inte.
Man skriver in namnet,
och klickar antingen på DEN ÄR ÖPPEN! eller DEN ÄR STÄNGD!.
Appen kontaktar servern och meddelar detta,
och så får man svaret OK från servern:
Protokollet för kommunikationen med servern är enkelt.
Man kopplar upp sig mot port 2003,
och då väntar servern på ett kommando från klienten.
-
Om man skickar kommandot OPEN namn,
där namn är ett ord utan mellanslag,
registrerar servern att den affären är öppen,
och returnerar OK.
-
Om man skickar kommandot CLOSED namn,
registrerar servern att den affären är stängd,
och returnerar OK.
-
Om man skickar kommandot QUERY namn,
svarar servern med antingen Open eller Closed,
beroende på den senaste registreringen den fått,
eller Unknown, om ingen rapporterat något om den butiken än.
-
Om man skickar något felaktigt,
till exempel om namnet innehåller mellanslag,
får man ett felmeddelande från servern,
antingen
ERROR: WRONG FORMAT
eller
ERROR: UNKNOWN COMMAND.
Konstruera denna app!
Servern kommer att köras på port 2003 på basen.oru.se,
och det är också den som den färdiga appen ska koppla upp sig mot,
men man kan också ladda ner servern här för att provköra mot hemma:
OpenOrClosedServer.zip
Krav
-
Det ska gå att mata in ett namn på en butik, till exempel Pressbyrån.
-
Appen ska koppla upp sig mot port 2003 på servern basen.oru.se.
-
Man ska kunna kontrollera om en butik är öppen,
genom att appen kopplar upp sig mot servern och frågar.
-
Man ska kunna rapportera om en butik är öppen eller stängd,
genom att appen kopplar upp sig mot servern och registrerar detta.
-
Appen behöver inte se ut som exemplet,
men den beskrivna funktionaliteten ska finnas.
-
Appen får inte krascha.
Om det blir något fel när man skriver in något,
eller att den inte kan koppla upp sig mot servern,
får appen inte krascha,
utan den ska visa ett tydligt meddelande för användaren om vad som var fel.
-
Appen behöver inte spara något (utom på servern).
-
Det finns inget krav på att appen ska fortsätta fungera
om man vrider på telefonen.
Tips
-
Observera att serven inte klarar namn med mellanslag,
så skickar man ett sådant får man ett felmeddelande som svar.
-
Om du provkört mot en egen testserver,
kontrollera att din inskickade lösning kopplar upp sig mot
basen.oru.se
och inte din egen testserver.
Thomas Padron-McCarthy
(thomas.padron-mccarthy@oru.se),
18 januari 2019