Schlagwort: android

Zazen Meditation Timer: Neue Version

Ab sofort ist eine neue Version meines Meditation Timers im Google Play Store verfügbar.

Keine Menütaste mehr notwendig

Immer mehr Nutzer hatten Probleme auf aktuelleren Android-Geräten die Menütaste zu finden. Oft gab es keine mehr und man musste eine andere Taste lange festhalten um das Menü zu öffnen. In der neuen Version sind nun alle Funktionen auch als Buttons direkt verfügbar. Da ich meine Nutzer von alten Android 1.6 Versionen nicht aussperren wollte, habe ich bewusst darauf verzichtet die neue ActionBar zu nutzen.

Kein Internet-Recht mehr notwendig

In den letzten Versionen hatte ich immer das Internet Recht angefordert. Damit wollte ich im Falle eines Absturzes dem Nutzer anbieten mir einen Bug-Report zu schicken. In der Vergangenheit ist das aber nie passiert – daher habe ich diese Funktion und damit das Recht nun entfernt.

Zeit-Einstellungen geändert

Bisher hatte ich ein eigenes Steuerelement verwendet um die Meditationszeit einstellen zu lassen. Die Bedienung war aber suboptimal und der Aufwand das Element zu perfektionieren stand einfach nicht in einem vernünftigen Verhältnis zum Nutzen den es erfüllt. Daher sind nun Standard-Buttons und Eingabefelder an dessen Stelle getreten.

Design überarbeitet

Das gesamte Design der App habe ich mit einem eigenen Style überarbeitet, so dass es nun moderner aussieht. Das helle und dunkle Thema sind weiterhin verfügbar, sehen aber meiner Meinung nach nun deutlich edler aus.

Ich wünsche euch viel Freude mit der App!

Mental Arithmetic Game

Currently, I am working on a game for the Android Platform that trains the mental arithmetic skills. The user is presented with a grid of numbers and has to create a, what I call „flow“ through some of the numbers to build a given target value. This image from my concept document shows how it will work:

Mental Arithmetic App Concept Art

When the player made a flow that sums up to the value of 10, the blocks he used disappear and new blocks fall into place from the top. The details about scoring and achievements are still in an early concept phase.

At the moment, I plan only for addition and subtraction operations in the Game, but still think about how to make multiplication and dividing possible.

State Machine

The game will be just a single Activity that shows a fullscreen OpenGL ES view.

The complete state and input handling will be done in my own Finite State Machine. The Activity delegates all events and the drawing call to the current state of the state machine. This will then perfom the necessary operations:

Finite State Machine Concept


The complete Android-specific functions stay in the Activity area. The Input Events are all encapsulated in own Classes as well as all possible LiveCycle Events that may need the game to process like saving the current game state (in Activity.onPause) or resuming from a saved game (in Activity.onResume/onRestart) are sent in a custom way to the state, as well.

This approach has the advantage, that the game will be easier to port to different platforms. The game already uses my own Android Support Library AndroidPE2, which encapsulates all OpenGL ES calls. Porting to another GL implementation is then only a matter of replacing the class „SteveGLES20“ with an implementation suitable for the target platform.


My next step will be to create a GUI system in my AndroidPE2 lib to create nice and cool Buttons and other UI elements. I think, at first I will only implement Buttons and a LayoutManager so I will be able to create the Main Menu.

Implementing In-App Billing for Android

Although my wallpaper is provided free of charge in the Google Play Store, it comes as a demo version. Some important features are disabled by default and the user needs to buy an in-app product to unlock these features.

Google provides an easy to use library that is able to handle the payment and querying tasks and shields away lots of the complexity behind it. In this article I present how I implemented the In-App billing functionality for my Live Wallpaper and how I solved the problems that I faced.