Simple Flashlight v3.1

Simple Flashlight for Android

Die “Simple Flashlight” App für Android ist nun in der Version 3.1 im Market verfügbar. Simple Flashlight ist eine einfache Taschenlampe für dein Mobiltelefon oder deinen Tablet. Es wurde die transparente Displaybeleuchtung entfernt. Zudem gibt es jetzt die Möglichkeit, durch “Wischen” nach rechts bzw. links die Farbe des Bildschirms auf rot oder blau zu ändern.

Recent Changes (v3.1)

  • Displaybeleuchtung verbessert (Transparenz entfernt)
  • Swipe nach rechts => Bildschirm blau färben
  • Swipe nach links => Bildschirm rot färben
  • Swipe verbessert

Recent Changes (v3.0)

  •  Möglichkeit die App zu starten indem man die Suchtaste gedrückt hält
  •  Bildschirmbeleuchtung ist nun transparent
  •  Swipe-up und Swipe-Down zum dimmen der Bildschirmhelligkeit

Simple Flashlight im Android Market

Downloaden und ausprobieren! https://market.android.com/details?id=at.muehlburger.android.simple.flashlight

Simple Flashlight v3.0

Simple Flashlight for Android

Die “Simple Flashlight” App für Android ist nun in der Version 3.0 im Market verfügbar. Simple Flashlight ist eine einfache Taschenlampe für dein Mobiltelefon oder deinen Tablet.

Recent Changes (v3.0)

  •  Möglichkeit die App zu starten indem man die Suchtaste gedrückt hält
  •  Bildschirmbeleuchtung ist nun transparent
  •  Swipe-up und Swipe-Down zum dimmen der Bildschirmhelligkeit

Simple Flashlight im Android Market

Downloaden und ausprobieren: https://market.android.com/details?id=at.muehlburger.android.simple.flashlight

Enhanced by Zemanta

[spritpreisrechner.at] – Apps entwickeln

Vor kurzem wurde in Österreich der Spritpreisrechner der E-Control offiziell der Öffentlichkeit vorgestellt. Es hat nicht lange gedauert, bis auch die ersten Android App Entwickler die Seite zu nutzen versuchten. So finden sich derzeit im Android Market schon einige Spritpreisrechner Apps.

Ich habe mir einmal das Datenformat angesehen, welches die Website spritpreisrechner.at für die Abfrage der Spritdaten benutzt. Es ist eigentlich ganz einfach:

Es werden per HTTP POST Request Anfragen an http://www.spritpreisrechner.at/espritmap-app/GasStationServlet geschickt. Wichtig ist dabei der Parameter “data” der natürlich mit Werten (Längen- und Breitengraden bzw. einen Suchstring) initialisiert werden muss.

Beispielsweise könnte man folgenden cURL Aufruf ausführen (die Daten in “data” sind url-encoded”):

[code language=”bash”]
curl -d “data=%5B%22Graz%22%2C%22DIE%22%2C15.414262484145%2C47.057105360725%2C15.494085024429%2C47.08048974931%5D” http://www.spritpreisrechner.at/espritmap-app/GasStationServlet
[/code]

Der HTTP Request Header sieht konkret folgendermaßen aus:

[code]
Request URL:http://www.spritpreisrechner.at/espritmap-app/GasStationServlet
Request Method:POST
Status Code:200 OK
Request Headersview source
Accept:*/*
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4
Connection:keep-alive
Content-Length:101
Content-Type:application/x-www-form-urlencoded
Host:spritpreisrechner.at
Origin:http://spritpreisrechner.at
Referer:http://spritpreisrechner.at/ts/map.jsp
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.215 Safari/535.1
X-Requested-With:XMLHttpRequest
Form Dataview URL encoded
data:[“”,”DIE”,15.409674251128,47.051201316374,15.489496791403,47.074588294516]
Response Headersview source
Connection:Keep-Alive
Content-Type:text/html;charset=UTF-8
Date:Fri, 26 Aug 2011 08:27:11 GMT
Keep-Alive:timeout=4, max=150
Transfer-Encoding:chunked
[/code]

Der Parameter “data” enthält einen JSON String der mit folgenden Werten befüllt wird:

[code]
data:[
“”, => Ort (Tankstellen werden in der Nähe dieses Ortes gesucht) Update: Vielen Dank an Andreas Stütz!: Dieser Parameter gibt an, ob auch geschlossene Tankstellen angezeigt werden sollen (“checked”) oder nicht (“”)
“DIE”, => Treibstoffart: “DIE” oder “SUP” (Diesel oder Super 95)
15.414258888907, => Longitude 1 (Längengrad)
47.057106335865, => Latitude 1 (Breitengrad)
15.494081429191, => Longitude 2 (Längengrad)
47.080490724022 => Latitude 2 (Breitengrad)
]
[/code]

Longitude 1 und Latitude 1 geben Koordinaten der linken unteren Ecke, Longitude 2 und Latitude 2 die Koordinaten der oberen rechten Ecke an. Das so aufgespannte Rechteck definiert den sichtbaren Bereich auf der Google Maps Karte. Im Zentrum sollte sich sinnvollerweise die aktuelle Position befinden. Innerhalb des sichtbaren Bereiches werden die 5 billigsten Tankstellen mit den dazugehörigen Spritpreisen angezeigt. Um das Rechteck aufzuspannen kann man sich in Android folgendermaßen behelfen:

1. Aktuelle Position mittels Android LocationManager ermitteln
2. Mittels der aktuellen Position und der Methoden getLongitudeSpan() und getLatitudeSpan() die rechte obere und die linke untere Ecke berechnen und anschließend
3. Parameter “data” mit den ermittelten Werten befüllen und HTTP Post Request abschicken.

Wird der oben beschriebene HTTP Request ausgeführt, bekommt man als HTTP Response einen JSON String, der wie folgt aufgebaut ist:

[code]
[
{
“kredit”:true,
“self”:true,
“spritPrice”:[
{
“amount”:”1.262″,
“datAnounce”:”Thu Aug 25 17:45:55 CEST 2011″,
“gasStationId”:”7766″,
“errorItems”:[

],
“errorCode”:0,
“datValid”:1314287155000,
“spritId”:”DIE”
}
],
“automat”:false,
“city”:”Graz”,
“open”:true,
“distance”:1.32,
“postalCode”:”8010″,
“gasStationId”:7766,
“errorItems”:[

],
“priceSearchDisabled”:false,
“longitude”:”15.4509774″,
“payMethod”:”UTA”,
“mail”:””,
“gasStationName”:”Turmöl”,
“fax”:”433164751524″,
“clubCard”:””,
“openingHours”:[
{
“beginn”:”06:00″,
“day”:{
“dayLabel”:”Feiertag”,
“order”:8,
“errorItems”:[

],
“errorCode”:0,
“day”:”FE”
},
“end”:”22:00″
},
{
“beginn”:”05:00″,
“day”:{
“dayLabel”:”Dienstag”,
“order”:2,
“errorItems”:[

],
“errorCode”:0,
“day”:”DI”
},
“end”:”23:00″
},
{
“beginn”:”05:00″,
“day”:{
“dayLabel”:”Montag”,
“order”:1,
“errorItems”:[

],
“errorCode”:0,
“day”:”MO”
},
“end”:”23:00″
},
{
“beginn”:”05:00″,
“day”:{
“dayLabel”:”Freitag”,
“order”:5,
“errorItems”:[

],
“errorCode”:0,
“day”:”FR”
},
“end”:”23:00″
},
{
“beginn”:”06:00″,
“day”:{
“dayLabel”:”Samstag”,
“order”:6,
“errorItems”:[

],
“errorCode”:0,
“day”:”SA”
},
“end”:”22:00″
},
{
“beginn”:”06:00″,
“day”:{
“dayLabel”:”Sonntag”,
“order”:7,
“errorItems”:[

],
“errorCode”:0,
“day”:”SO”
},
“end”:”22:00″
},
{
“beginn”:”05:00″,
“day”:{
“dayLabel”:”Mittwoch”,
“order”:3,
“errorItems”:[

],
“errorCode”:0,
“day”:”MI”
},
“end”:”23:00″
},
{
“beginn”:”05:00″,
“day”:{
“dayLabel”:”Donnerstag”,
“order”:4,
“errorItems”:[

],
“errorCode”:0,
“day”:”DO”
},
“end”:”23:00″
}
],
“access”:””,
“url”:””,
“serviceText”:”ShoprnBistrornWaschanlagernSB-LanzenwäschernDiesel-Schnellläuferrn”,
“maestro”:true,
“companionship”:false,
“address”:”Conrad.-v.Hötzendorfstr. 135 “,
“club”:false,
“errorCode”:1,
“service”:false,
“latitude”:”47.0510643″,
“bar”:true,
“telephone”:”43316475152″,
“gasStationInternalId”:”CvH”
}
]
[/code]

Einen Parser für diesen JSON String zu schreiben, dürfte nicht allzu schwer sein. 🙂 Das war auch schon alles um eine App für spritpreisrechner.at entwicklen zu können. Eigentlich ziemlich einfach. Was meint ihr? Freu mich auf Kommentare und Anregungen!

Videos of Google IO 2011 – Android Tracks of Day Two

In the next few videos you can seen the recorded tracks of Google’s IO 2011 Developer Conference covering Android development. Sit back and enjoy!

Google I/O 2011: Keynote Day 2

Android Market for Developers

Designing and Implementing Android UIs for Phones and Tablets

Building Android Apps for Google TV

Android Development Tools

Taking Android to Work

Enhanced by Zemanta

Videos of Google IO 2011 – Android Tracks of Day One

 

Google IO is currently taking place in San Francisco and for everybody who could not attend Google live streamed quite some sessions. In the following you can see the videos which are currently published:

Google I/O 2011: Android Keynote Day One

[youtube OxzucwjFEEs]

As an Android developer I am very interested in the Android sessions as you can imagine. So the following the next video first covers advaced topics of android development.

Google I/O 2011: Android Protips: Advanced Topics for Expert Android App Developers

[youtube twmuBbC_oB8]

The next video discusses business models that you as a developer can use to monetize your app. So this surely is interesting for everybody of you, isn’t it?

Google I/O 2011: Don’t just build a mobile app. Build a business.

[youtube wHAR46DT8ok]

Ever wondered about what Near Field Communication on Android is implemented? The answer gives you the next video.

Google I/O 2011: How to NFC

[youtube 49L7z3rxz4Q]

The next video covers the highlights of the new update release of Android Honeycomb (Version 3.1).

Google I/O 2011: Honeycomb Highlights

[youtube sTx-5CGDvM8]

The last video of the first day contains a discussion with the Android Team.

Google I/O 2011: Fireside Chat with the Android Team

[youtube gfiYUL2exT8]

More videos will follow here as soon as they get published, so stay tuned!

Enhanced by Zemanta

Introducing Robotium – A Testing Framework for Android

Android robot logo.
Image via Wikipedia

Robotium is an open source testing framework for Android applications. It makes it easy to write complex black-box test cases. Test driven development is a methology where tests are written before the actual application.

1. Write a testcase
2. Watch it failing
3. Write the actual source code in you application which enables the test to pass
4. Watch the test passing
5. Go back to step 1

The following video gives you an introduction into Robotium:

I will definitely use Robotium for my future Android projects. It is really worth having a look at it.

There is another interersting video:

Google launched In-app Billing on Android Market

Google Android In-App Billing
Google Android In-App Billing

Google yesterday launched In-app Billing on the Android Market. This feature enables developers to publish apps that use in-app Billing and users can make purchages from within the Android apps.

Google writes:

Android Market In-app Billing is an Android Market service that lets you sell digital content in your applications. You can use the service to sell a wide range of content, including downloadable content such as media files or photos, and virtual content such as game levels or potions. [Source]

In-app Billing enables developers to bring a lot of new apps on the market. I will definitely have a look at it more deeply.

[via Android Developers]

Enhanced by Zemanta

HowTo set up the Android SDK on Ubuntu for HTC Phones

Image representing HTC as depicted in CrunchBase
Image via CrunchBase

In this post I will explain how I set up the Android SDK on Ubuntu for my HTC Desire.

I first followed the steps for Ubuntu as described in Setting up a Device for Development:

With an Android-powered device, you can develop and debug your Android applications just as you would on the emulator. Before you can start, there are just a few things to do:

  1. Declare your application as “debuggable” in your Android Manifest.In Eclipse, you can do this from the Application tab when viewing the Manifest (on the right side, set Debuggable to true). Otherwise, in the AndroidManifest.xml file, add android:debuggable="true" to the <application> element.
  2. Turn on “USB Debugging” on your device.On the device, go to the home screen, press MENU, select ApplicationsDevelopment, then enable USB debugging.
  3. Setup your system to detect your device.
    • If you’re developing on Ubuntu Linux, you need to add a rules file that contains a USB configuration for each type of device you want to use for development. Each device manufacturer uses a different vendor ID. The example rules files below show how to add an entry for a single vendor ID (the HTC vendor ID). In order to support more devices, you will need additional lines of the same format that provide a different value for the SYSFS{idVendor} property. For other IDs, see the table of USB Vendor IDs, below.
      1. Log in as root and create this file: /etc/udev/rules.d/51-android.rules.For Gusty/Hardy/Maverick Meerkat, edit the file to read:
        SUBSYSTEM=="usb", SYSFS{idVendor}=="0bb4", MODE="0666"

        For Dapper, edit the file to read:
        SUBSYSTEM=="usb_device", SYSFS{idVendor}=="0bb4", MODE="0666"

      2. Now execute:
        chmod a+r /etc/udev/rules.d/51-android.rules

You can verify that your device is connected by executing adb devices from your SDK platform-tools/ directory. If connected, you’ll see the device name listed as a “device.”

When I executed adb devices the name of my HTC Desire just looked like “??????????”. After executing reload udev then disconnecting and connecting my phone again, everything looked fine. Now I could see the name of my HTC Desire after running adb devices.

Maybe this post helps you in setting up your Android SDK on Ubuntu. If it does please drop me a comment below.

(Thanks to the post of it-slav.net)

Enhanced by Zemanta

[video] – Developing Android REST Client Applications

Virgil Dobjanschi demonstrates in this Google I/O session patterns for developing RESTful applications on the Android platform.

[youtube xHXn3Kg2IQE]

(via Google I/O 2010)

Related articles

Enhanced by Zemanta