Alle Artikel von Dominik

JumpnRoll Update

Nach einer zugegebenermaßen wirklich sehr langen Pause, habe ich mich jetzt endlich wieder einmal um meine allererste Android App JupmnRoll gekümmert und dem Spiel ein größeres Update verpasst 😀

Unter anderem wurde jetzt ein Online Highscore über Google play games integriert, wodurch die Punkte jetzt mit Freunden verglichen werden können bzw. ihr den Highscore stürmen und die Nummer 1 der Welt werden könnt 😉
Abgesehen davon, gab es auch eine Menge Bugfixes und Verbesserungen, der Android 4.4 immersive mode wird nun unterstützt, das Tablet Layout angepasst und noch vieles mehr!

Leider ist die Codebase von JumpnRoll wirklich schon sehr alt und ich habe im Nachhinein betrachtet anfänglich einiges sehr schlecht und falsch implementiert. Aus heutiger Sicht würde ich praktisch alles anders machen und im Grunde müsste die App komplett neu geschrieben werden, damit größere Updates und Erweiterungen wirklich vernünftig und ohne extrem viel Mehraufwand möglich sind. Deshalb – und weil ich momentan auch viele andere Projekte habe – wird es zumindest in Naher Zukunft leider eher keine größeren Updates mehr geben!

Trotzdem würde es mich sehr freuen wenn ihr die neue Version wieder einmal ausprobiert und natürlich bin ich auch für Feedback und Verbesserungsvorschläge offen 😉

(EN) Android L API changes

I recently installed the Android L developer preview on my Nexus 5 and had to discover some really strange API changes.

The first thing I noticed was that IntelliScreen or, to be specific, it’s detection of the current foreground App didn’t work anymore. As this is necessary for App specific rules which are one of IntelliScreens main features, I definitely had to fix this and after some research I found this: https://developer.android.com/preview/api-overview.html#BehaviorGetRecentTasks
It seems, that the API to determine the current foreground App got deprecated in L and doesn’t work anymore because of privacy concerns. On the one hand that’s understandable but on the other hand, this is a really bad restriction because many apps like IntelliScreen rely on this API and it even had it’s own permission! Luckily I found a workaround:

appProcesses = activityManager.getRunningAppProcesses();
for (RunningAppProcessInfo rap : appProcesses) {
	if (rap.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
		//Foreground App found!
	}
}

This code just gets all running processes and then looks which of them have foreground importance. It doesn’t work as reliable as the old method and there are many unnecessary processes included but at least it works! Nevertheless this leads to the question why is this method still working? And more importantly will it still work in the final Android L release?
It really doesn’t make sense to remove one API for privacy concerns but still leave other (although more complicated) methods available. So I hope that Google fixes this in some way, preferably by reintroducing the old API or something similar.

Another strange thing is that lockscreen widgets got – at least in the preview build – removed! They were only shortly introduced in Android 4.2 and should now get removed again after slightly more than a year? That really doesn’t seem as they have a good long time planning! In addition to that, I found them really useful and DashClock – especially in conjunction with my custom extension 😉 – was one of my favorite apps with a fix place on my first lockscreen page. Of course you can continue to use DashClock as a normal homescreen widget but on the Lockscreen it was even more useful!

Luckily Android L is still a developer preview and none of the changes are final. So lets hope that Google fixes this and all the other problems for the final version because apart from that, Android L is really great 😀

(EN) DashClock and the problem with the worldReadable flag

As of DashClock version 1.5 a new optional „worldReadable“ flag was introduced to the DashClock API. Here is the Manifest declaration:

 <meta-data android:name="worldReadable" android:value="true" />

This flag indicates whether only the official DashClock app (signed by Roman Nurik) or all apps can access an extension. Basically this is a good idea, because if your extension has some sensitive data not every app should be allowed to access this data.

Unfortunately this also brings some problems. When I first updated my app DashClock custom extension to use the newest DashClock API I hadn’t set this flag, because I simply didn’t knew that it exists. For this reason the flag automatically had a value of „false“ and this brought some trouble.

After the update I got a lot of negative reviews from people who are using custom roms, that the extension isn’t visible for them. It took me a lot of time to figure out that the problem had to do with the worldReadable flag. For whatever reason some custom roms (e.g. Slimbean or Carbon rom) include their own version of DashClock as a system app in the rom. As this isn’t the official DashClock app and I hadn’t set the worldReadable flag the extension (as intended) didn’t show up for those people!

For my app the solution is really easy. As custom extension doesn’t show any sensible data, I just set the worldReadable flag to true and everything works as expected now. Nevertheless if there is an extension which really shows sensitive data, this is a problem! On the one hand, If it doesn’t set the worldReadable flag it disappoints lots of customers but on the other hand, if the flag is set to true, this is a potential security risk!

Summing up, the worldReadable flag is basically a good idea but in it’s current form it’s more a big problem! As it’s default value is false and only very few developers know of this flag when they are creating their first extension, this produces lots of trouble and annoyance because the extension doesn’t work for apparently no reason. We can only hope that the flag gets either replaced or that custom roms are shipping the official DashClock app in the future.

2. Platz bei Jugend Innovativ

Bei Jugend Innovativ – Österreichs größtem Schulwettbewerb für innovative Ideen – haben wir nun mit IntelliScreen den 2. Platz erreicht! 😀

Das hat uns neben den 1.500 € Preisgeld auch viele tolle neue Erfahrungen gebracht. Außerdem wurde IntelliScreen somit endlich ein bisschen bekannter.

Unser 2. Platz zeigt auch, dass die Idee von IntelliScreen wirklich viel Potenzial hat und wir eine sehr gute App geschaffen haben! Also falls du die App noch nicht installiert hast, schau schnell im Play Store vorbei und probiere IntelliScreen aus;-)

IntelliScreen – großes Update auf Version 3.0

Nach einer längeren Pause seit dem letzten Update (wir arbeiten mittlerweile hauptsächlich an anderen Apps) hat IntelliScreen nun wieder ein großes Update bekommen. Neben ein paar Bugfixes und Verbesserungen, sind in dem Update auch coole neue Features enthalten, wie z.B. eine interaktive Hilfe (einfach auf das Fragezeichen in der rechten oberen Ecke klicken) und die Möglichkeit die Helligkeit je nach Vordergrundapp zu ändern. Außerdem gibt es jetzt ein brandneues Tablet Layout und ein Quick Setup für den erleichterten Einstieg!

Hier ist der komplette Changelog:

  • Verbesserte Erkennung der Vordergrundapp
  • Integrierte Hilfefunktion hinzugefügt
  • Festlegung der Bildschirmhelligkeit je nach Vordergrundapp
  • Alle IntelliScreen Regeln sind nun deaktiviert, wenn der Lockscreen aktiv ist
  • Verschiedene Bug fixes und verbesserte Übersetzungen
  • Layout/Design für Tablets hinzugefügt
  • Google Backup Service integriert
  • Funktion zum sofortigen Ausschalten des Displays (Näherungssensor) integriert
  • Quick-Setup zum schnellen Einstieg hinzugefügt
  • verbesserte Hilfe-Funktion
  • Bugfixes

Also schaut mal wieder in den Play Store und holt euch das Update 😉