Side 1
1. Forord Denne produktdokumentasjonen skal kunne leses som et selvstendig dokument. For den som har lest forprosjektet, kravspesifikasjonen eller kjenner godt til prosjektet, er det ikke nødvendig å lese kapittel tre og fire med underkapitler. Leseren kan da begynne i fra kapittel fem, hvis ikke et annet kapittel faller mere interessant. Hvis den som leser dette ikke kjenner til prosjektet anbefaler vi å lese dokumentet i sin helhet. I denne produktdokumentasjonen vil det i hovedsak bli beskrevet hvordan applikasjonen er bygget opp. Den er delt opp i to deler. Beskrivelsen av produktet for ios og Android. Tekniske utrykk som brukes i beskrivelsene og forklaringene for applikasjonene er lagt til som vedlegg i ordlisten. Denne er anbefalt å ha bruke hvis det skulle være ord og utrykk som er uforståelig. Dokumentasjonen er interessant for personer som har til hensikt å videreutvikle, installere, vedlikeholde og modifisere systemet på et senere tidspunkt. Det vil også være interessant for personer som har til hensikt å markedsføre eller skal drive brukerstøtte. Mer detaljert informasjon om hvilke løsninger, valg og utfordringer vi har hatt under produksjonen av applikasjonene, kan du lese mer om i prosessdokumentasjonen. Detaljert beskrivelse av krav vil fremkomme i kravspesifikasjonen. Ettersom det er to applikasjoner vi har utviklet, vil applikasjonene og hvordan vi har utviklet disse være beskrevet noe forskjellig selv om de har mye til felles. I dokumentet kan man lese om hvilke verktøy og programmeringsspråk vi har brukt for å utvikle ios(i operative systems) og Android. ios og Android er mobile operativsystem og er de mest brukte i markedet. Det vil bli vist eksempler på bilder og kode vi har brukt til å utvikle begge produktene. For å få fult utbytte av denne dokumentasjonen er det en fordel av man har kunnskap og erfaring med programmeringsspråkene Object C og Java samt utviklingsplattformene Xcode og Eclipse, selv om dette ikke er en nødvendighet. Side 2
2. Innholdsfortegnelse 1. Forord... 2 2. Innholdsfortegnelse... 3 3. Innledning... 5 3.1 Om Prosjekt Gruppen... 5 3.2 Om Oppdragsgiver... 5 3.3 Dagens situasjon... 6 3.4 Mål... 6 4. Overordnet beskrivelse av produktet... 7 5. ios... 8 5.1 Teknologier... 8 5.2 Applikasjonens struktur og oppbygning... 8 5.2.1 Meny... 10 5.2.2 Nyheter... 11 5.2.3 Om NR... 13 5.2.4 Kontakt NR... 14 5.2.5 Blogg... 15 5.2.6 Feeds... 16 5.2.7 Mail Abonnering... 19 5.2.8 Kart... 20 5.2.9 Utvikling videre... 22 6. Android... 22 6.1 Teknologier... 22 6.2 Applikasjonens struktur og oppbygning... 22 6.2.1 Meny... 24 6.2.2 Nyheter... 24 6.2.3 Om NR... 26 6.2.4 Kontakt NR... 27 6.2.5 Blogg... 28 6.2.6 Feeds... 29 6.2.7 Mail Abonnering... 31 Side 3
6.2.8 Kart... 32 6.3 Utvikling videre... 33 Side 4
3. Innledning I dette kapittelet har det blitt skrevet om prosjektgruppen, hvem de er, hvor de kommer i fra og litt om bakgrunnen til hver enkelt. Det er også skrevet om hvem arbeidsgiver er, historie, hvor mange ansatte og hva deres arbeid går ut på. Senere i kapittelet vil det bli sagt litt om dagens situasjon hos arbeidsgiver, kort om rammebetingelser og hvorfor prosjektgruppen har fått dette oppdraget. Til slutt i dette kapittelet vil det bli en kort overordnet beskrivelse av systemet. 3.1 Om Prosjekt Gruppen Prosjektgruppen er satt sammen i fra høgskolen i Oslo og Akershus og består av 5 studenter. Vi er tre studenter i fra studiene dataingeniør, en student i fra anvendt it og en student i fra informasjonssystemer og it-ledelse. Alle studentene er i fra forskjellige nasjonaliteter: Norge, Spania, Etiopia, Syria og Iran. 3.2 Om Oppdragsgiver Oppdragsgiver er Norsk Regnesentral, et forskningsinstitutt som har 70 ansatte hvor 60 av disse er forskere. Norsk Regnesentral er en uavhengig, ideell og allmennyttig privat stiftelse som utfører oppdragsforskning for næringsliv, offentlig sektor og private organisasjoner både i Norge og internasjonalt. Forskningsområdene er IKT og statistisk modellering, og NR er ett av Europas største miljøer innen anvendt statistikk. Største anvendelser er petroleum, finans/forsikring, jordobservasjon, miljø, helse, forvaltning og bildeanalyse. Innen IKT arbeides det med informasjonssikkerhet, universell utforming og smarte informasjonssystemer. Prosjektgruppen jobber i samarbeid med Institutt for Anvendt forskning i Informasjonsteknologi. Siden NR ble stiftet i 1952 til 1970 har NR hatt en viktig rolle i å utføre matematiske beregninger for andre organisasjoner. NR har jobbet med statistikk, fjernmåling, datakommunikasjon, internett vitenskap, multimedia, geostatistikk, petroleum, marine ressurser, strømpriser og finans. Selskapet ble først et selvstendig institutt i 1985 og i 1988 flyttet den til sin nåværende lokasjon. NR er blant annet kjent for oppfinnelsen av programmeringsspråket Simula. Side 5
3.3 Dagens situasjon Norsk Regnesentral har per dags dato tre typer informasjonskanaler. Igjennom e-post, sms og en webside formidler de informasjon til sine ansatte og det offentlige. De ønsker å utvide dette slik at Norsk Regnesentral kan forenkle informasjonsformidlingen til sine ansatte, privatpersoner og bedrifter som er interessert i å få informasjon om Norsk Regnesentral og deres tjenester. Dette igjennom å utvikle en applikasjon som støtter Android og ios som er de mest brukte mobiloperativsystemene på markedet. Dette har dannet grunnlaget for hovedprosjektet som Høgskolen i Oslo og Akershus har kunnet videreformidle til studenter og hvor vi har valgt dette som hovedprosjekt. 3.4 Mål Vi har etter oppdragsgivers ønske og etter beste evne utviklet et produkt som Norsk regnesentral kan anvende nå og videreutvikle på et senere tidspunkt. Målet vårt var å utvikle en applikasjon som var brukervennlig og oppfylte de krav som oppdragsgiver hadde gitt og som man kan lese mere om i kravspesifikasjonen. Vi føler vi har klart oppgaven og nådd de målene vi har satt i sammen med oppdragsgiver. Side 6
4. Overordnet beskrivelse av produktet Hensikten med systemet skal være å gi brukere av smarttelefoner informasjon, slik at de til enhver tid har mulighet til å være oppdatert med den nyeste informasjonen som er utgitt i fra Norsk Regnesentral. Dette skal komme i form av en applikasjon, et tilleggsprogram som håndterer informasjonen som norsk regnesentral vil formidle på en enkel og strukturert måte. Applikasjonene skal være to-språklig, norsk og engelsk. De skal inneholde funksjonene Om NR, Nyheter, Blogg, Feeds, Mail Abonnering, Kontakt NR og Kart og hvor disse skal vises som rader. Applikasjonene og funksjonene er beskrevet detaljert i kravspesifikasjonen. Under vil man se en grafiskfremstilling av applikasjonen og hvordan man navigerer seg fram i fra hovedmenyen og til de forskjellige emnene. Nyheter Feeds Om NR Meny Blogg Kontakt NR Mail Abonnering Kart Figur 1. Side 7
5. ios Dette kapittelet tar for seg sluttproduktet av applikasjonen for ios. Vi velger først å beskrive noen av teknologiene som ligger bak som vil være til hjelp når vi beskriver de ulike delene av applikasjonen. Etter vi har tatt for oss programmet vil det til slutt bli et kapittel som kan være til hjelp for utvikling videre. 5.1 Teknologier I utviklingen av applikasjonen har vi brukt Apple sitt utviklingsmiljø Xcode for Mac. Dette er et program som kan lastes ned gratis for alle brukere av Mac med en Apple ID. Med i dette utviklingsmiljøet er en egen simulator som vi har brukt til å teste applikasjonen mens vi har kodet. 5.2 Applikasjonens struktur og oppbygning Vår applikasjon bygger på en navigasjonskontrollør objekt som sørger for strukturen i programmet. Det er denne som holder styr på navigasjonen mellom meny og delfunksjonene, og er synlig i de blå navigasjonstoppene du ser øverst på hvert View i applikasjonen. Vi bygde denne applikasjonen på et eget template i Xcode hvor navigasjonskontrolløren, første tabellside og en tom linket side allerede var satt. Vi endret på tabellen og lagde sidene på nytt, men navnene på klassene har blitt beholdt. Dette er de to ViewController ene med spesielle navn. I tillegg har det blitt med en egen AppDelegate klasse som styrer handlinger som skal skje ved spesielle handlinger ved selve applikasjonen. Vi har ikke lagt til noe ekstra i denne. Denne applikasjonen har åtte klasser: - AppDelegate - MasterViewController - DetailViewController - NRFeeds - FeedView - NRNews - NRBlog - NRMap De syv siste er ViewControllere. I tillegg har vi to logo filer og to localizable.strings filer som bestemmer applikasjonslogoen og tekstspråket respektivt. Xcode har også lagt ved Side 8
egne filer som skal være med i kjøringen av applikasjonen. Det eneste ekstra vi har lagt ved er MapKit for å få kart til å bruke Googles karttjenester. MainStoryBoard brukes til å få utviklingen visuelt framstilt og er innebygd i Xcode. Under er det vist strukturen på prosjektmappen. Figur 2. Side 9
5.2.1 Meny Figur 3. ViewController : MasterViewController. Synkroniserte Objekter: Etiketter med navn, tabellradene under etikettene og navigasjonstoppen. Når meny starter vil alle etikettene som vises i de forskjellige radene og navigasjonsteksten kalle på en lokal streng som inneholder teksten som skal vises. Det valgte språket på mobilen bestemmer om dette er den engelske eller norske versjonen av localizable.string som blir kalt på. Teksten som vises på bilde over er plassholdere som symboliserer hvor disse feltene er, for å gjøre det lettere for oss å vite hva som går hvor. Radene har blitt delegert til å åpne et nytt View når de blir trykket på som inneholder den ønskete funksjonen. Navigasjonstoppen får også en annen blåfarge i oppstart av menyen. Vi har slått av alle tilgjengelighets innstillinger for selve etikettene, slik at disse ikke leses opp som statiske tekster. Radene har vi endret innstillinger til å leses som knapper med samme lokaliserte tekst som for etikettene. Tekstlokaliseringene og fargeendringen foregår i klassens ViewDidLoad funksjon. Tabellen og plasseringen av etikettene er definert i MainStoryBoard. Side 10
5.2.2 Nyheter Figur 4. ViewController: NRNews. Synkroniserte Objekter: Navigasjonstopp og WebView. Lokasjon i oppstart av klassen gjør at navigasjonsetiketten skifter til rett navn. I WebView sender vi inn en html streng som vi bygger selv basert på kildekode hentet fra Norsk Regnesentrals nyhetsside. Vi lager denne strengen ved en funksjon som leser innholdet av en gitt URL og spesifiserer tegnkoden til å være NSISOLatin1StringEncoding. Dette vil være html-koden som ligger bak URL en i vårt tilfelle. Denne strengen splittes opp i en liste basert på funn av tegnene <h. En ny streng som inneholder html koden vi ønsker å vise bygges opp fra innholdet til listen. Vi har selv telt via kildekoden hvor nyhetsartiklene på Norsk Regnesentrals side starter. Første artikkel og utover settes i denne nye strengen, hvor vi foran hver artikkel også må plassere de to tegnene vi brukte til å lage listen. Side 11
Figur 5. Skulle denne kalte delen av listen være tom, antar vi at brukeren ikke har tilkobling til internett og gir en lokalisert strengtekst med beskjed om dette i stedet. Den forhåndsbestemte innstillingen om å skalere websiden til å passe mobilvinduet slås av når det ikke er internett for å vise denne beskjeden mer tydelig. Side 12
5.2.3 Om NR Figur 6. ViewController: DetailViewController. Synkroniserte Objekter: Navigasjonstopp og tekstfelt. Om NR er en av tre funksjoner vi mente var såpass små at de ikke trengte en egen klasse for utførelse. I ViewDidLoad på DetailViewController blir navigasjonsetikettet og innholdet av tekstfeltet satt ved lokasjonsstrenger. Her har også tekststørrelsen blitt skrudd opp fra 14 til 18 på tekstfelt objektet. Side 13
5.2.4 Kontakt NR Figur 7. ViewController: DetailViewController. Synkroniserte Objekter: Navigasjonstopp og WebView. I Kontakt NR blir navigasjonsetikettet satt ved lokasjon og i WebView sender vi inn en lokasjonsstreng som inneholder kontaktinformasjon. Denne har vi selv skrevet ved html kode og DetailViewController sin ViewDidLoad kjører koden her. Side 14
5.2.5 Blogg Figur 8. ViewController: NRBlog. Synkroniserte Objekter: Navigasjonstopp og WebView. Etikettet til Blogg endres også her ved hjelp av lokasjon. Som nyheter tar vi her html koden som ligger bak URL en til Norsk Regnesentrals blogg og lager en streng av koden med tegnsettet NSUTF8StringEncoding. Vi deler denne strengen etter teksten <div id= node- i en liste, og henter ut alle forekomstene i en ny streng. I tillegg tar vi med hele html-header (<head></head>) og CSS informasjonen der med i den nye html strengen for å få det visuelle oppsettet i orden. Resten av strengen definerer vi som html body. Denne html strengen bruker vi i WebView for å vise blogg. Hvis listen er tom, antar vi at det ikke er internett forbindelse og sender ut en streng med informasjon om dette. Vi slår også av skaleringsinnstillingen på WebView. Side 15
5.2.6 Feeds Figur 9. ViewController: NRFeeds for listevisning av feeds. FeedView for å vise innholdet. Synkroniserte Objekter: NRFeeds: Navigasjonstopp. FeedView: WebView. Etikettittelen endres i NRFeeds ViewDidLoad funksjon. For å hente inn alle feeds fra Norsk Regnesentral lagrer vi innholdet av RSS filen deres som en lang tekststreng med NSISOLatin1StringEncoding. Denne konverteres til en NSUTF8StringEncoding ved å lagre strengen som en data fil med NSISOLatin1StringEncoding tegnkode og lage en ny streng av denne med NSUTF8StringEncoding. Vi splitter opp i en liste denne strengen ved ordet <item>. Atom RSS som Norsk Regnesentral strukturerer sine feeds på denne måten: <item> </item> <title> </title> <link> </link> <description> </description> Side 16
På alle objektene i lista tar applikasjonen ut tittel og beskrivelse, og legger dette i to egne private lister. Dette gjøres ved å finne startposisjonen og sluttposisjonen til de tilhørende taggene, og ta ut innholdet mellom. Til slutt fjernes mellomrom i starten og slutten av tittel strengene. Om strenglisten er tom eller bare inneholder teksten som kommer før <item>, antas det at det ikke er internettforbindelse. Alt dette foregår i ViewDidLoad metoden for NRFeeds klassen. NSArray *arrayfeeds = [sourcefeeds componentsseparatedbystring:@"<item>"]; int nfeeds = [arrayfeeds count]; titles = [[NSMutableArray alloc] init]; descriptions = [[NSMutableArray alloc] init]; if(nfeeds < 2) { } else { [titles addobject:nslocalizedstring(@"nointernettfeed", nil)]; [descriptions addobject:@""]; for(int i = 1; i < nfeeds; i++) { NSRange starttitle = [[arrayfeeds objectatindex:i] rangeofstring:@"<title>"]; NSRange endtitle = [[arrayfeeds objectatindex:i] rangeofstring:@"</title>"]; [titles addobject:[[arrayfeeds objectatindex:i]substringwithrange:nsmakerange(starttitle.location + 7, endtitle.location - starttitle.location - 8)]]; NSRange startdesc = [[arrayfeeds objectatindex:i] rangeofstring:@"<description>"]; NSRange enddesc = [[arrayfeeds objectatindex:i] rangeofstring:@"</item>"]; [descriptions addobject:[[arrayfeeds objectatindex:i]substringwithrange:nsmakerange(startdesc.location, enddesc.location - startdesc.location)]]; } Side 17
nfeeds = [titles count]; for(int j = 0; j < nfeeds; j++) { [titles replaceobjectatindex:j withobject:[[titles objectatindex:j]stringbytrimmingcharactersinset: [NSCharacterSet whitespaceandnewlinecharacterset]]]; } } For å vise tabellen som er dynamisk lagd i View-et spesifiserer vi egenskapene i funksjoner i NRFeeds klassen. Vi har satt antall seksjoner til alltid å være en. Antall rader er spesifisert til å være like mange som antall titler i tittellisten. For hver rad setter vi både tilgjengelighet og rad tekst til å være tittelen på feedet som ligger bak. Når en rad velges, åpnes et XIB vindu med en opprettet FeedView klasse bak. I denne klassen setter vi de private variablene title og description til å være teksten i innholdet av tittel og beskrivelse listenes indeks, som er den samme som den raden. Denne teksten vises i en WebView i FeedView som en html side. Side 18
5.2.7 Mail Abonnering Figur 10. ViewController: DetailViewController. Synkroniserte Objekter: Navigasjonstopp og WebView. Mail Abonnering åpner en lokal html fil i WebView som sender informasjon videre til en mailchimp webside. Denne siden har blitt lagd for Norsk Regnesentral til håndtering av deres påmelding for nyhetsbrev. Vi har lagd stikkordsform av alle tekstene som vises på siden og bruker string replace med lokasjonstekst for å oversette mellom norsk og engelsk. Navigasjonstoppen skilles også ved hjelp av lokasjon. Brukeren skriver inn email-adressen sin i tekstfeltet som vises på siden og trykker på abonner knappen. Hvis det ikke er internettforbindelse vil en vanlig feilside om dette vises i vinduet. Skulle det være feil med email-adressen vil mailchimp sin side gi beskjed om dette. Hvis e-mailen ble sendt vil Mailchip si ifra at adressen ble registrert. Disse tilbakemeldingene vises kun på mobiltelefonen og ikke emulator. Side 19
5.2.8 Kart Figur 11. ViewController: NRMap. Synkroniserte Objekter: Navigasjonstopp og MapView. Vi har importert en kartpakke som kaller på Googles karttjenester for å få kart til å virke. Navigasjonstoppen endres etter lokasjon. Vi har slått på innstilling for å vise din egen posisjon på MapView objektet og lagret latitude og longitude for midten av Oslo og Norsk Regnesentrals kontor. Kontoret har vi markert på kartet og vi bruker Oslos posisjon til å definere regionen kartet viser. I ViewDidLoad: _MapLabel.title = NSLocalizedString(@"MapLabel", nil); CLLocationCoordinate2D nrlocation; CLLocationCoordinate2D oslo; oslo.latitude = 59.911309; Side 20
oslo.longitude = 10.751903; nrlocation.latitude = 59.943593; nrlocation.longitude = 10.716755; MKPointAnnotation *annotationpoint = [[MKPointAnnotation alloc] init]; annotationpoint.coordinate = nrlocation; annotationpoint.title = @"Norsk Regnesentral"; annotationpoint.subtitle = NSLocalizedString(@"MapText", nil); [_MapView addannotation:annotationpoint]; MKCoordinateSpan span = {0.1, 0.1}; MKCoordinateRegion region = {oslo, span}; [_MapView setregion:region]; Side 21
5.2.9 Utvikling videre For videreutvikling av dette prosjektet trenger du Xcode og et eksemplar av prosjektmappen. Prosjektet åpnes ved filen NR.xcodeproj du finner i prosjektmappen. 6. Android Dette kapittelet tar for seg sluttproduktet av applikasjonen for Android. Vi velger først å beskrive noen av teknologiene som ligger bak som vil være til hjelp når vi beskriver de ulike delene av applikasjonen. Etter vi har tatt for oss programmet vil det til slutt bli et kapittel som kan være til hjelp for utvikling videre. 6.1 Teknologier Vi har brukt Eclipse for utvikling av applikasjonen. Programmet lastes ned gratis for alle brukere. Vi måtte også laste ned Android SDK verktøy for å kunne utvikle Android prosjekter i Eclipse og den har Emulator for å vise og teste ut hvordan ser applikasjonen ut på en mobiltelefon. 6.2 Applikasjonens struktur og oppbygning Applikasjonen er bygd på Java klasser og XML-filer. Den har ni klasser: - AndroidprojectActivity - about - blogg - contact - feeds - FeedView - maillist - map - news Og ni XML filer: - main Side 22
- about - blogg - contact - feeds - feedview - maillist - map - news I tillegg er det drawable mapper som inneholder logobilde og markørbilde, og values mapper som inneholder strenger for språk. Figur 12. Side 23
6.2.1 Meny Klasse: AndroidprojectActivity.java Layout: main.xml Meny er lagd i et LinearLayout med knapper på XML-filen. Hver knapp har en egen identifikasjon og tekst satt av lokasjon. I klassefilen har hver knapp en OnClickListener som åpner en ny Activity med tilhørende klasse. 6.2.2 Nyheter Figur 13. Klasse: news.java Layout: news.xml Nyheter starter ved å slå på Javascript i WebView. Vi starter også et loading bilde som skal vise at applikasjonen jobber. Vi har valgt å slå på nettverksjobbing i bygge tråden, så vi endrer policy til Android for denne siden til å godta dette. En ny runnable kjører innlasting og visning av websiden. Side 24
En try-catch metode bestemmer hva som blir vist. Vi prøver å bruke en BufferedReader til å lese teksten som ligger bak URL en til Norsk Regnesentrals webside. InputStreamReader har vi satt til å lese tegnkoden ISO-8859-1 (latin1). Teksten leses linje for linje og settes inn i en StringBuffer. En streng blir lagd fra denne bufferen og teksten deles opp i en liste mellom alle funn av tegnene <h. Figur 14. Indeks fire og utover settes inn i en streng ved hjelp av StringBuilder, hvor tegnene som blir borte etter å ha splittet teksten settes med i tillegg. Boksen som viser at applikasjonen jobber slås av, vi konverterer strengen til base64 med en innebygd funksjon i Android SDK og vi viser resultatet i WebView med dens loaddata funksjon. Den konverterte strengen, text/html; charset=iso-8859-1 og base64 sendes med som parametere. Hvis det kommer noen feil underveis sendes en html side med en feilmelding i WebView. Side 25
6.2.3 Om NR Figur 15. Klasse: about.java Layout: about.xml Vi har brukt LinearLayout for Om NR delfunksjon og MediumTextView for innholdet. Teksten ble lagret som streng i values mappen for å kunne oversette den. Denne teksten er satt i XML-filen. Side 26
6.2.4 Kontakt NR Figur 16. Klasse: contact.java Layout: contact.xml Kontakt NR åpner en nettside i WebView med lokasjonsstreng som innhold, text/html; charset=utf-8 som type og null som tegnkoding. Side 27
6.2.5 Blogg Figur 17. Klasse: blogg.java Layout: blogg.xml I WebView endrer vi innstillinger til å ha Javascript slått på og rullefelt utenfor vinduet. Videre setter vi URL en som åpnes til Norsk Regnesentrals bloggside. En meldingsboks viser at siden laster og stopper når denne er ferdig. Hvis det er feil gir WebView beskjed om dette. Side 28
6.2.6 Feeds Figur 18. Klasser: feeds.java og FeedView.java Layout: feeds.xml og feedview.xml I layout til Feeds er det satt en tom TableLayout med id tablelayfeeds. I klassefilen er nettverksoperasjoner slått på som policy og en privat TableLayout settes til å være den samme som brukt i layout. Før radene lages, hentes RSS filen til Norsk Regnesentral ned som en streng og fra denne lages en liste med feeds ved å skille mellom <item> tagger. Ut ifra disse lages to private strenglister hvor tittel og beskrivelse for hver feed settes inn i samme rekkefølge. Dette gjøres ved å lage en understreng med start og slutt tagger for <title> og <description> som parametere for hvert feed i listen. For titler fjernes mellomrom i starten og slutten av teksten. Når dette er gjort lages radene i TableView programmessig. Det blir lagd like mange rader som det er feed titler. Hver rad får satt et nummer som id og en tekst. Teksten blir satt til å Side 29
være tittelteksten på feedet og en OnClickListener settes på teksten til å åpne FeedView med tittel og beskrivelse på feedet. Teksten settes inn i pakken som sendes med til FeedView i to strenger. Tekststørrelse blir satt til 20 og en padding på 15 pixler blir satt på raden. Raden settes til slutt inn i TableView. Hvis dette slår feil ut vil det i TableView lages en rad med en feiltekst. Under er det vist et bilde av FeedView klassen. Figur 19. FeedView åpnes som egen Activity når brukeren har klikket på teksten til et feed. FeedView har et layout med en WebView. Tittel og tekst på feedet hentes fra pakken som ble sendt med da FeedView aktiviteten startet. Html kode lages med tittel som h2 og teksten i en egen paragraf, og denne koden vises i WebView. Side 30
6.2.7 Mail Abonnering Figur 20. Klasse: maillist.java Layout: maillist.xml Mail Abonnering setter en lokasjons streng med html kode inn i et WebView, i tillegg til parameterer for html med UTF-8 tegn og ingen base64 tegnkode. Side 31
6.2.8 Kart Figur 21. Klasse: map.java Layout: map.xml I layoutfilen ligger en API nøkkel som Google sin karttjeneste bruker for å vise kart i Android. Denne er lagd av hver unike signeringsnøkkel med MD5 nummer og passer bare til enten den signerte apk pakken eller det utviklingsmiljøet med debug keystore som brukes. I klassen slås på innstillinger for å vise forstørrelse- og forminsknings-knapper og satellitt bilde. Kartet forhåndstilles til å være over Norsk Regnesentrals kontor og en markør plasseres på dette stedet. En markør for brukeren settes også på kartet og funksjonene for View -ets OnPause og OnResume funksjoner brukes for å slå av og på brukerens posisjon. Denne vises på Android mobiltelefoner hvor det er godtatt at posisjonen for mobiltelefonen brukes. Side 32
6.3 Utvikling videre Utvikling videre vil kreve et utviklingsmiljø og Androids SDK pakke. Vi anbefaler nyeste versjonen av Eclipse til dette. Androids utviklerside viser hvordan man installerer denne[1]: [1] http://developer.android.com/sdk/index.html Viktig å huske på for Android: - Kart trenger en egen API nøkkel for å vises. Denne må genereres fra MD5 nummeret til signeringsnøkkelen for applikasjonen. Nummeret finner du ved å bruke Javas Keytool på.keystore filen du signerer applikasjonen med. - Klasser åpnes som aktiviteter. Disse aktivitetene må legges til i Android Manifest filen. Klassene trenger layout XML-filer for å vises. Side 33