Våra senaste
toppartiklar

- Computer Sweden:

Stort säkerhetshål upptäckt hos Wordpress


- Computer Sweden:

Svenska skattepengar för hundratals miljoner till Apple


- Computer Sweden:

keyboard

Populärt program spårar dig på nätet – utan att du vet om det


- Computer Sweden:

Här är länderna som skickar mest spam


Tänk strategiskt innan du börjar - TechWorld:

Bygg din egen Android-app

Android är ett fritt och öppet operativsystem för mobiltelefoner. Det är baserat på Linux och utvecklas av Google tillsammans med Open Handset Alliance. Fördelarna jämfört med andra operativsystem för telefoner är att mobiltillverkare kan anpassa Android utan att betala licensavgifter. Dessutom är utvecklarna inte låsta till en viss mobiltillverkare, utan kan nå ut till fler användare med sina applikationer.


1 Vi bygger nyhetsläsare


Vår utgångspunkt är en applikation från nyhetssajten IDG.se. Det är en nyhetsläsare som visar artiklar från IDG.se i ett snabbt och enkelt gränssnitt. Artiklarna laddas ner från IDG:s publiceringssystem och sparas lokalt för att snabbt kunna visas nästa gång applikationen startas.

När applikationen öppnas visas ett gränssnitt med fyra flikar, varav den aktiva visar löpsedeln. De andra visar de senaste nyheterna, tester samt en lista med fler ämnen. När användaren klickar på en artikel i någon av listorna visas hela artikeln med text och bild.

I den här artikeln ska vi skapa en applikation som är baserad på den här nyhetsläsaren, men alla exempel är generella.



Så här vill vi att IDG-applikationens användargränssnitt ska ut. Olika tabbar visar de olika listorna och artiklarna.


2 Android kör java


Androidapplikationer skrivs i java. Den kompilerade javakoden och andra resurser, som till exempel bilder, paketeras till ett Androidpaket med filändelsen apk. Paketet kan sedan distribueras till telefoner där det packas upp så att applikationen installeras.

Varje Androidapplikation körs under en java virtual machine (jvm) i en egen Linuxprocess med ett unikt användarnamn. Det innebär att applikationerna används isolerade från varandra och att filer och databaser inte kan delas mellan dem.

En Androidapplikation saknar mainfunktion och består i stället av applikationskomponenter som kan instansieras och köras oberoende av varandra. När en komponent i en applikation efterfrågas startas dess process, om den inte redan används. Det går därför att använda komponenter i andra applikationer utan att kompilera deras javakod.

Det finns fyra typer av applikationskomponenter. Den vanligaste är activities som används för att visa användargränssnitt. De andra typerna är services, broadcast receivers och content providers.

En Androidapplikation består av minst en activity, oftast flera. Den activity som är markerad som den första visas när applikationen startas. I nyhetsläsaren från IDG.se visas först en activity med en lista över artiklar. När användaren klickar på någon av dem startas en ny activity som visar hela artikeln.

Activities startas med ett meddelande som kallas för intent. Det är en datastruktur som bland annat innehåller information om vilken activity som ska startas. Det går även att skicka data mellan två activities genom ett intent. Alla activities som startas läggs på en stack. När en ny startas läggs den överst. Det är alltid den activity som ligger överst som visar ett användargränssnitt för användaren. När användaren trycker på backknappen tas den bort från stacken och när stacken är tom avslutas applikationen.

Användargränssnittet som visas med en activity kan antingen skapas med en layout i xml eller med javakod. Oftast används en kombination av båda. En statisk layout skapas med xml och elementen i layouten manipuleras sedan med hjälp av javakod.



Activities läggs överst på stacken när de startas och plockas bort när användaren trycker på backknappen.


3 Installera utvecklingsmiljön


Det är helt gratis att utveckla Android-applikationer och allt du behöver göra för att komma igång är att ladda ner utvecklingsmiljön. Den består av Java Development Kit (JDK), Eclipse, Android SDK och en Android Development Tools-plugin till Eclipse.

"Det är gratis att utveckla applikationer och allt du behöver göra är att ladda ner utvecklings-miljön."


Utvecklingsmiljön fungerar likadant oavsett om man arbetar i Windows-, Linux- eller Mac-miljö. En utförlig installationsguide finns på Androids hemsida för utvecklare (http://developer.android.com/sdk).



På Androids hemsida för utvecklare finns utförliga installationsinstruktioner.


4 Hämta artiklar


Många applikationer behöver kommunicera med en webbtjänst för att skicka eller hämta data. I IDG.se-applikationen hämtas alla artiklar från IDG:s publiceringssystem Polopoly via xml-flöden.

Andra sätt att är att använda klassen httpclient eller urlconnection. Httpclient kan i vissa fall vara mer robust och har fler inställningsmöjligheter än den enklare urlconnection. För att inte låsa användargränssnittet under tiden som data skickas eller hämtas måste det köras i en egen tråd i bakgrunden. Att programmera med trådar kan ibland verka komplicerat, men med klassen asynctask blir det enklare.



Med några få rader skapas en httpclient som hämtar data från internet.


5 Trådar ökar farten


Asynctask är ett enkelt sätt att skapa en ny tråd för att utföra tidskrävande uppgifter i bakgrunden. För att använda asynctask måste du skapa en subklass som åtminstone implementerar funktionen doinbackground. Oftast måste man även implementera funktionen onpostexe­cute. I IDG.se-applikationen används en asynctask för att hämta artiklar från publiceringssystemet.

Trådar som körs i bakgrunden kan inte göra några ändringar i applikationens användargränssnitt. Eftersom doinbackground körs i en sådan tråd måste man i stället använda funktionen onpostexecute. Den körs i samma tråd som användargränssnittet och anropas när doinbackground är klar.


6 Bearbeta artiklarna


Data som hämtas från en webbtjänst måste oftast bearbetas för att kunna användas. De vanligaste formaten är xml eller json (javascript object notation). Oberoende av vilket man använder finns det parsrar i Java och Android. Eftersom IDG.se-applikationen hämtar artiklarna via xml-flöden används en xml-parser för att hämta artikelns olika delarna.

Xml-parsern är en del av simple api for xml (sax). För att använda parsern skapar man en subklass till defaulthandler som implementerar funktionerna startelement, endelement och characters. Deras syfte är att identifiera de olika elementen i xml-datan samt att spara alla tecken mellan start- och slutelement.

I startelement och endelement kan man göra strängjämförelser för att avgöra i vilket element parsern befinner sig i.



Skapa en subklass till defaulthandler för att identifiera xml-elementen.


7 Spara lokalt


För att undvika att samma data hämtas flera gånger kan den sparas lokalt. Beroende på vilken typ av data det är som ska sparas finns det olika alternativ. För små mängder data, till exempel inställningar, kan klassen preferences användas. Där sparas data i nyckelvärde-par. Större datamängder kan sparas direkt i applikationens filsystem.

I IDG.se-applikationen sparas alla artiklar i en databas som uppdateras först efter en viss tid. Fördelen med en databas är att det är enkelt att filtrera och söka i datan.

I Android används SQLite som databas. Varje databas är lokal för applikationen och kan inte användas av andra installerade applikationer. Om du ändrar databasens struktur mellan två versioner av din applikation måste databasen uppgraderas när den nya versionen installeras. För att underlätta uppgraderingen finns klassen sqlliteopenhelper.


8 Förbättrad bildhantering


Om bilder hämtas från en webbtjänst bör även de sparas lokalt. De kan antingen sparas i minnet eller skrivas ner i filsystemet. Det finns tyvärr ingen färdig klass i nuvarande versioner av Android som hanterar det här, men det finns andra alternativ. I IDG.se-applikationen används en klass från företaget Commons­ware som heter simplewebimagecache.

Om de cachade bilderna används i en listview måste du tänka på att raderna återanvänds av Android när du skrollar genom listan. För att undvika att fel bild visas kan du använda en annan klass som heter thumbnail­adapter, också från Commonsware.


9 Dags att testa


För att så många som möjligt ska kunna använda din applikation är det är viktigt att den fungerar med olika telefonsorter. Det finns modell­er med både mindre och större skärmar, och du måste oftast anpassa din applikation för att den ska fungera på alla. Förutom olika skärmstorlekar och upplösningar måste man även tänka på att det finns flera versioner av Android.

"Försök alltid testa
din applikation på en
riktig telefon."


Genom att skapa en android virtual device (avd) för varje skärmstorlek och Androidversion kan man testa alla kombinationer utan att ha tillgång till en riktig telefon, men försök alltid testa din applikation på en riktig telefon ändå. Emulatorn kan betraktas som ett komplement till dina tester.



Med AVD Manager kan du en skapa en avd för varje skärmstorlek och Android-version.


10 Publicera applikationen


När applikationen är färdigutvecklad kan du publicera den på Android Market så att den blir tillgänglig för allmänheten. För det får man betala en engångsavgift på cirka 180 kronor (25 dollar).

Innan du kan ladda upp den måste du dock signera den med ett certifikat som du kan skapa själv med Javas Keytool-verktyg.

För närvarande finns det ingen möjlighet för oss i Sverige att sälja Androidapplikationer och det finns tyvärr inte heller någon tidsplan för när detta kommer att bli möjligt.



På Android Market kan du för en engångsavgift på cirka 180 kronor lägga upp din applikation.

» Läs mer




Fakta

  • Android Öppet och fritt operativsystem för mobiltelefoner utvecklat av Open Handset Alliance och Google.
  • Activity Del av en Android-applikation som används för att visa ett användargränssnitt.
  • AVD (Android virtual device) Emulator som låter dig testa Androidapplikationer på datorn, utan tillgång till en riktig telefon.
  • Intent Asynkront meddelande med information för att starta en activity.
  • JVM (Java virtual machine) Virtuell maskin där du kan köra program skrivna i java. Gör att javakod kan skrivas plattformsoberoende.
  • Keytool Java-verktyg som används för att skapa och signera certifikat som behövs för att distribuera Android-applikationer.
  • Klass Begrepp som används i objektorienterad programmering och kan liknas med en mall som beskriver hur ett objekt skapas.
  • Parser Funktion eller bibliotek för extrahering av information från till exempel en xml-fil.
  • SQLite Resurssnål sql-databas som inte kräver någon databasserver.
  • Stack Ett sätt att lagra data. Det som ligger överst på stacken är det som tas bort först.
  • Tråd I applikationer med trådar kan datorn/telefonen utföra uppgifter parallellt och oberoende av varandra.



Artikelkommentatorerna ansvarar själva för sina inlägg.

Regler för inlägg i artikelforumet

Kommentatorn ansvarar själv för sina inlägg.
Vi har nolltolerans mot inlägg som innehåller diskriminerande uttalanden, personliga påhopp eller språk som kan uppfattas som stötande. Även poänglösa datorkrigsinlägg och inlägg som är off topic tas bort. Brott mot reglerna kan leda till permanent avstängning.

IDG förbehåller sig dessutom rätten att i varje enskilt fall bedöma huruvida ett inlägg ska tas bort, även om det inte faller under någon av reglerna ovan.

Upprepat postande av olämpliga inlägg kan medföra avstängning från artikelforumen.

Frågor? Mejla idg.se@idg.se

Läs mer om vår policy i diskussionsforum

Rekryterar just nu

Utvalda whitepaper

HR + Mobilitet = sant
Säljavslut med molnet
Från klick till snack till affär

Nyhetsbrev

Anmäl dig till vårt dagliga nyhetsbrev!

Morgonens viktigaste it-nyheter och Dagens Dilbert

Please don't insert text in the box below! Please don't insert text in the box below! Villkor

Nyheter

- Computer Sweden:

Office 365 är en miljardaffär


- Computer Sweden:

Öppet format standard i Storbritannien


- Internetworld:

E-handlare blåste hundratals svenskar


- Internetworld:

Uber får konkurrens i Stockholm

Kodsnack avsnitt 61 - TechWorld:

Kodsnack: Sommar och spelterräng


- PC för Alla:

Microsoft hånar
Siri i ny reklamfilm


Apple köper upp hyllad Podcast-app

iPHONE-APP Elektronikjätten betalar motsvarande 205 miljoner kronor för rättigheterna till appen Swell.


- Computer Sweden:

Sarkasmer krånglar till textanalys

- Computer Sweden:

Spelstudion reste sig ur Grin-askan


- TechWorld:

Erbjuder 750 000 för att knäcka Tor


- PC för Alla:

Pirate Bay satsar mobilt


- Computer Sweden:

Så ser succéprognosen ut för mobilspelmarknaden


- Internetworld:

Soundcloud-veteran vill förändra musikskapandet


- PC för Alla:

Hitta hotellet med snabbast internet

- Computer Sweden:

Stort säkerhetshål upptäckt hos Wordpress


amazon

Amazons praktfiasko

Nyheter Företaget gör storförlust efter hektiskt kvartal med siffror klart under förväntan. Nu pekar man bland annat på Sverigelanseringen som möjlig anledning.



- Internetworld:

Så (o)jämställda är internetbolagen


- Computer Sweden:

Sociala medier livsviktigt för semestersvenskar


Nyhetsbrev
Kontakta oss
Postadressen är:
IDG.se, Karlbergsvägen 77, 106 78 Stockholm

Telefon (växel): 08-453 60 00

Ansvarig utgivare: Carl Grape



Om IDG.se
Copyright © International Data Group
Sök efter artiklar och produkter: