I’m currently trying to port the Freebloks game to Android. The core of the game is actually pretty easy to convert from POSIX C to Java for Android and I’m already done migrating the client code and the model, so my app is able to establish a connection to a remote server and display the state of the game.
The display is still very simple, only meant to visualize the state of the core and there is no user interaction possible yet but I plan to port the OpenGL interface too, which does need some rewriting of the logic.
I’m working on keeping the network protocol intact so you can use play together with people using Freebloks 3D in Windows, Linux or MacOSX.
I hope to have a test version around for download, as soon as I have the server portion ported too, so one can play it without connecting over the data connection.
My first Android game is ready to be released in the Google Play Store (former Android Market).
The game is pretty simple and very similar to Toss Words, Spill and Spell, Perquackey or the German games Letra-Mix and Wörter Würfeln.
In the game you get a set of random letters and you have to arrange them in a limited time to valid words. The words are checked against a database of valid words using available spell checkers. After the first update, the game comes with support for English, German, Romanian, Spanish and French, both the dictionary and the localization of the user interface.
Get the game fresh from the Store, while it’s still hot: 🙂
I was debugging my Frupic Android app the other day, trying to rotate images according to the orientation stored in their exif headers.
The necessary Android class ExifInterface(String filename) to read exif information from local files was quickly set up, but I couldn’t get it to report the correct orientation, it always returned ORIENTATION_UNDEFINED (0).
After debugging my code for a while on my physical device, double and triple checking on my PC that the file to be downloaded actually contained correct exif information, I found out that the file on the phone was about 2kb smaller than the file on the PC and on the server.
I knew my phone was downloading the file over my German T-Mobile data connection, believing that T-Mobile does not touch the files when requesting the image directly. I also knew that T-Mobile does replace image URLs in HTML files to be able to cache requested images on a server close by and I also knew they might compress them. I assumed, T-Mobile would not binarily alter a file if it is directly requested.
Browsing to http://speed.telekom.de (only available from within their mobile data network), customers are able to alter the behaviour of T-Mobile’s transparent HTTP proxy:
Compress Picture- and Video transfers (this reduces quality and filesize)
Optimize transfer without loss in quality
Default is to optimize the transfer without loss in quality, which apparently does remove all exif headers from downloaded images but is also told to remove comments from HTML code and doing other micro optimazion stuff.
While I can choose to enable exif headers for slightly more traffic, it’s clear that my Android App can not rely on the exif information being available, unless the images are downloaded over SSL. I guess I am just one of few who have actually hit this limitation and I do not mind it being there. Could have saved me a lot of debugging time though.
Finally my second Android App is done, this time an image viewer and uploading app for the FruPic image sharing site: http://frupic.frubar.net.
The app shows the posted images in a nice grid-like overview or as a flingable gallery, offering abilities to download or re-share the posted images as well as upload pictures from your gallery to the site in two clicks.
I integrated an offline caching mechanism of the downloaded data, so you should be able to browse FruPics as far as they are previously cached.
Android is an interesting platform and it’s easy and fun to develop for. My first app is a very simple tool to query the IT-Monitoring state from the University of Ravensburg-Weingarten, as also available on their public website: