Techstuff: oktober 2009 Archives

Under de senaste 2 dagarna har årets 24H Business Camp gått av stapeln. Skoj att det finns så många roliga idéer som kommer fram och en skoj är mikrobutik.se. Du lägger upp en vara enligt en mall och de tar en liten procent av köpkostnaden (mellan 10 och 100 beroende på pris på varan) men själva butiken kostar inget. För att testa så lade jag upp en mini-butik för att köpa kaffe.

Vill bli inspirerade och höra pitcharna från 24HBC så rekommenderar jag att ni tar en titt på följande film.

| | Comments (0) | TrackBacks (0)
 

Igår släppte jag en ny version (1.0.8) av min Android-applikation, Temp in Luleå och nytt är att den går att får som 'widget'. Applikationen visar bara temperaturen i Luleå och läsare där ute kan kanske tycker det är meningslöst att utveckla en applikation som bara visar temperatur i för ett enda ställe men jag gör det för att stilla mitt intresse i Android-programmering.


TempInLulea108_1.png TempInLulea108_2.png  

Första bilden är av själva applikationen och den andra visar den som en widget.

Arkitektur: Applikationen är uppdelad i fyra bitar:

  1. Widget: som visar widget-gränssnittet på "hem-skärmen".
  2. Application: som visar en fullskärm med mer info om applikationen och där man kan kontrollera den lite.
  3. Service: en process som kör i bakgrunden och hämtar temperaturen från källan (Marge) och sedan anropar applikationen och widgeten med ett event att det finns nytt temperatur data. Notifieringarna sker via ett callback-interface där varje modul som vill känna till ändringarna registrerar sig för att bli uppdaterad med ett event.
  4. Notification: Från applikationen kan man välja att även visa nuvarande temperatur som en notifiering. Detta är ett arv från Android innan version 1.5 då det inte fanns widgets.

Det är en enkel applikation men jag har försökt programmera den som om den vore ett mycket större system. Här kommer lite blandade tips och tricks på hur man löser mer eller mindre förekommande problem.

Hur hantera ändring av skärm orientering? När man ändrar orientering på sin Android, dvs vrider på den så man ändrar mellan 'Landscape' och 'Portrait' så uppkommer problemet att ens applikation och widget har olika mycket utrymme att rita sitt gränssnitt på. Här kan man lyssna på events för att bli notifierad om ändringarna men Android har gjort det enklare än så. Man skapar helt enkelt ett bibliotek som heter 'layout-land' parallellt med med 'layout' och där lägger man en xml-fil med UI-layout som heter likadant som den för portrait-layouten. Har man denna fil där så kommer android-system att automatiskt välja rätt layout för de olika tillstånden. Applikationen och widgeten anropas inte ens med en notifiering att en ändring har skett. Dock måste man vara noga med att kalla elementen likadant i de båda layouterna. Tips: om du vill ändra layout i emulatorn så tryck Ctrl-F12 för att växla till nästa layout. Mer info om kontroll av emulatorn.

Hur hantera automatisk start av service/applikation vid boot? Det finns inget automatiskt sätt (liknande andra UNIX-baserade system) att registrera sitt program att det ska anropas automatiskt då systemet bootat upp. Här måste man registrera sig som lyssnare på android.intent.action.BOOT_COMPLETED i AndroidManifest.xml och då anropas den klass man angett och man kan göra det man vill vid start, t.ex. starta en service. Så här ser det i manifest-filen:

<receiver android:name="BootReceiver">

<intent-filter>

<action android:name="android.intent.action.BOOT_COMPLETED">

</action>

</intent-filter>

</receiver>

Hur får man en ram på sin widget utan att leka med Photoshop? Ladda ner en standard widget-ram från widget UI design sidan (bild-filen, inte Photoshop-filen) och lägg den som bakgrund i ditt UI via att sätta android:background="@drawable/frame" i layout-filen. Om du sedan har en LinearLayout som layout så måste du sätta ett offset i y-led överst för att komma inom ramen. Det gör du så här: android:layout_marginTop="5sp"

Finns massor mer att blogga här om gällande denna lilla applikation men det sparar vi till en annan dag!
| | Comments (1) | TrackBacks (0)
 

adb root

adb remount

adb push ~/work/android/trout-keypad-v3.kcm.bin /system/usr/keychars

adb shell reboot

from here

| | Comments (0) | TrackBacks (1)
 

Monthly Archives

Pages

Powered by Movable Type 4.34-en

About this Archive

This page is a archive of entries in the Techstuff category from oktober 2009.

Techstuff: augusti 2009 is the previous archive.

Techstuff: november 2009 is the next archive.

Find recent content on the main index or look in the archives to find all content.