En hälsning från Oliver

F00OOOOOOO00O0OO00O0OOOOOOOOOOOOOOOOOOOOOOOOOO0OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO000000000000000000000000000000JHTFHDVFHICMQMCAMCFSAMCMAMCCCCCCCCCCCCCCCCCEIIIIIIIÅ9000000000000000000000000000000000000000000000000000000000000000AWO0¨,¨0000000000000+D0W+¨,WWWWWWWWWW¨

PPPPPPÅWWF¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨”””ÄÄÄÄÄGCJ JGTC HCSGHJO000000000000000000000000000000000000000CRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRF++++++++++++++++++++++++++++´LKKUYKUYY87878898990p0o+00p0+o0oplolLooOjo0iitTYyUUYUIIOOoiopO OLIVER.0OOOOOOOOO0O0O0O00O

Säljes: Rancilio Rocky utan dosator

Jag känner att det är dags att uppgradera min kvarn och undrar om någon är intresserad av en begagnad Rocky utan dosator? Denna kvarn anses av många vara den bästa instegskvarnen för hemma-baristan!

Den är mindre än 3 månader gammal (togs i drift 20/7 i år) och kostar idag ny 2795:- hos Kaffegrossisten. Kvarnen är rengjord 4 gånger sedan den togs i bruk.

Vid bra bud ingår även en extra bönhållare och en ny graderingstejpsremsa. Kvarnen finns i Luleå men posten är duktig på att skicka paket (för det mesta ).

Skicka bud via email till peter(at)parnes.com.




Stort steg bakåt för IPRED-förespråkarna men imorgon röstas om vad FRA får/bör göra!

Idag sa hovrätten nej till att operatören Ephone skulle lämna ut information om vem som IP-nummret från den omtalade ftp-servern tillhör. Detta är ett stort steg bakåt för IPRED-förespråkarna. IDG skriver mer om detta. För övrigt tycker jag ‘IPRED-lagen’ är en vansinnig lag där privatpersoner skulle kunna hängas ut utan juridisk prövning.

Uppdatering: Det som hovrätten “säger” är att det inte har visats sannolika skäl för upphovsrättsintrång i just detta fall!

Samtidigt så är det omröstning i riksdagen imorgon onsdag om den så kallade FRA-lagen ska röstas igenom. Piratpartiets Rick Falkvinge skriver mer om detta. Om det röstas igenom så börjar FRA avlyssna från 1/12.

Temp in Luleå 1.0.8 – Android-utveckling

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!