0.0) + h;
const QRectF rect(x - w / 2, y - h / 2, w, h);
+diff --git a/main.cpp b/main.cpp
+index 2c6a59e..79627db 100644
+--- a/main.cpp 2014-04-26 23:40:24.253187700 +0200
++++ b/main.cpp 2014-04-27 00:38:55.378353311 +0200
+@@ -20,6 +20,9 @@
+
+ #ifdef ENABLE_DECODE
+ #include <libsigrokdecode/libsigrokdecode.h> /* First, so we avoid a _POSIX_C_SOURCE warning. */
++#ifdef ANDROID
++#include <jni.h>
++#endif
+ #endif
+
+ #include <stdint.h>
+@@ -45,6 +48,47 @@
+ Q_IMPORT_PLUGIN(qsvg)
+ #endif
+
++#if defined(ENABLE_DECODE) && defined(ANDROID)
++jint JNI_OnLoad(JavaVM *vm, void *reserved)
++{
++ JNIEnv* env;
++
++ (void)reserved;
++
++ if (vm->GetEnv((void **)&env, JNI_VERSION_1_6) != JNI_OK) {
++ return -1;
++ }
++
++ jclass envc = env->FindClass("org/sigrok/androidutils/Environment");
++ jmethodID getEnv = env->GetStaticMethodID(envc, "getEnvironment",
++ "()[Ljava/lang/String;");
++ jobjectArray envs =
++ (jobjectArray)env->CallStaticObjectMethod(envc, getEnv);
++ jsize i, envn = env->GetArrayLength(envs);
++ for (i=0; i<envn; i+=2) {
++ jstring key = (jstring)env->GetObjectArrayElement(envs, i);
++ jstring value = (jstring)env->GetObjectArrayElement(envs, i+1);
++ const char *utfkey = env->GetStringUTFChars(key, 0);
++ const char *utfvalue = env->GetStringUTFChars(value, 0);
++ setenv(utfkey, utfvalue, 1);
++ env->ReleaseStringUTFChars(value, utfvalue);
++ env->ReleaseStringUTFChars(key, utfkey);
++ env->DeleteLocalRef(value);
++ env->DeleteLocalRef(key);
++ }
++ env->DeleteLocalRef(envs);
++ env->DeleteLocalRef(envc);
++
++ return JNI_VERSION_1_6;
++}
++
++void JNI_OnUnload(JavaVM *vm, void *reserved)
++{
++ (void)vm;
++ (void)reserved;
++}
++#endif
++
+ void usage()
+ {
+ fprintf(stdout,