Sonntag, 14. September 2014

Energie sparen schwer gemacht

Mein Surface 3 Pro wollte nicht in den Energiesparmodus wechseln. Tatsächlich war nicht einmal die korrespondierende Option im Ein-/Ausschalten-Menü vorhanden. Des Rätsels Lösung: Connected Standby verträgt sich nicht mit Hyper-V, was beim Installieren von Visual Studio 2013 aktiviert wird. Ausführliche Infos finden sich auf The Connected Home.

.Net-te Konvertierungen

Das Umwandeln von Quelltexten, die in einer bestimmten Sprache vorliegen, in eine andere hat eine lange Tradition. Einen schönen Überblick liefert der Wikipedia-Artikel Source-to-source compiler. Gründe für die Konvertierung von Sprache A nach B gibt es viele. Sei es die Notwendigkeit, eine wichtige Bibliothek nutzbar zu machen, das Fehlen eines geeigneten Entwicklers, oder reine Neugier. Spaß macht es auf jeden Fall.

Da ich mich ein bisschen für C# interessiere, habe ich nach einem Umwandlungstool von dieser Sprache nach Java gesucht. Meine Wahl fiel auf den C# to Java Converter von Tangible Software Solutions. Den gibt es als kommerzielle Variante sowie in einer (eingeschränkten) Free Edition. Für das Experimentieren reicht die kostenlose Ausgabe vollkommen aus. Der Anbieter ist beileibe nicht alleine – eine entsprechende Recherche listet zahlreiche Produkte und Frameworks. Meine Auswahl ist deshalb auch keine Wertung, sondern, wenn Sie so möchten, reiner Zufall.

Lassen Sie uns nun einen Blick auf das Tool werfen:

Screenshot: C# To Java Converter

Screenshot: Einstellungen

Das Ergebnis sieht ja recht schick aus, und kann bzgl. Formatierung an die eigenen Bedürfnisse angepasst werden. Auffälig ist eigentlich nur, dass wir an der main()-Methode Anpassungen vornehmen müssen.

Übrigens gibt es unter http://compileonline.com/ die Möglichkeit, Code direkt ausführen zu lassen. Wie bei allen Online-Diensten muss man sich nur überlegen, welche Daten man an einen Server schickt.

Online-Übersetzung des C#-Originals

Auch Online-Compiler gibt es wie Sand am Meer. Haben Sie diesbezügliche Favoriten? Schreiben Sie mir…

Sonntag, 7. September 2014

Clip4Moni: Inhalt anzeigen

Ich habe Clip4Moni um eine kleine, aber nützliche Funktion erweitert. Das Programm kann den Inhalt des System-Clipboards als Text anzeigen. Dabei werden bestimmte Escape-Sequenzen aufgelöst.

Menü von Clip4Moni

So wird aus…

\u002A\u002f\u000a\u0069\u003d\u0034\u0032\u003b

Der Dialog Inhalt anzeigen

Der Inhalt bleibt aber unverändert, die Konvertierung erfolgt bewusst nur für die Darstellung.

Praktisch, oder?

Mittwoch, 20. August 2014

\u0069\u003d\u0034\u0032\u003b

Ich freue mich auf den Herbstcampus 2014. Und wenn Sie wissen möchten, was es mit dem Buchstabensalat im Titel auf sich hat, kommen Sie doch einfach zu meinem Talk.

Freitag, 15. August 2014

TKWeek: experimenteller Support für Schulferien

In TKWeek gibt es ab Version 1.7.7 experimentelle Unterstützung für Schulferien in Deutschland. Basis ist der Ferienkalender der Kultusministerkonferenz. Ganz wichtig: alle Daten sind ohne Gewähr.

TKWeek Schulferien #1

TKWeek Schulferien #2

TKWeek Schulferien #3

Samstag, 26. Juli 2014

Tomy Racing Cockpit

Meine Frau hat mir heute vom Flohmarkt ein cooles Gadget aus den frühen 80ern mitgebracht, das Tomy Racing Cockpit. Leider mag das gute Stück nicht mehr, aber das macht nichts, kultig ist es allemal. Ich selbst besaß das Spielzeug nicht, aber ein Junge aus der Nachbarschaft hatte eines. Der Schalthebel steuert ein paar Anzeigen, unter anderem die Geschwindigkeit und den Turbo.
Tomy Racing Cockpit #1
Tomy Racing Cockpit #2
Tomy Racing Cockpit #3
Tomy Racing Cockpit #4
Tomy Racing Cockpit #5
Tomy Racing Cockpit #6

Kenne Deine Klassenbibliothek Ausgabe 2014/07/26

Im Herbst vergangenen Jahres hatte ich an dieser Stelle über die Klasse Pair der Android-Klassenbibliothek berichtet. Mein Fazit damals:

Paare kommen recht häufig vor. Denken Sie an Koordinaten, Größenangaben oder Seitenverhältnissen. Aber auch für jede Form von Schlüssel-Wert-Kombinationen kann diese Klasse ein praktischer Container sein.

Das stimmt natürlich auch heute noch. Und gilt nicht nur für Android, sondern auch klassische Java-Projekte. Wenn Sie nach java key value pair suchen, stoßen Sie auf eine ganze Reihe von Eigenentwicklungen. Und natürlich auf Implementierungen in weit verbreiteten Bibliotheken. Commons Lang beispielsweise bietet im Paket org.apache.commons.lang3.tuple die abstrakte Klasse Pair sowie deren Ableitungen ImmutablePair und MutablePair. Nicht ganz so bekannt ist, dass Java von Haus aus etwas ähnliches anbietet: die Basis bildet das Interface java.util.Map.Entry. Die Klassen AbstractMap.SimpleEntry und AbstractMap.SimpleImmutableEntry implementieren es. Commons Lang tut dies übrigens ebenfalls.

Auffällig ist, dass die einzelnen Implementierungen jeweils eigene Namen für die Teile des Paares haben. Der Klassier ist key/value. Dann wären da noch first und second, sowie left und right. Hier sehen Sie übrigens das Hauptargument gegen den Einsatz von allgemeinen (generischen) Paaren. Sie verraten nicht, welche Beziehung im konkreten Einsatz die beiden Teile zueinander haben. Spannende Lektüre bietet der Stackoverflow-Eintrag What is the equivalent of the C++ Pair in Java?.

Wie sehen Sie das? Schreiben Sie mir…

Sonntag, 29. Juni 2014

Fragmentierung

Ja, ich habe mir eine LG G bestellt. Angeblich soll das gute Stück kommenden Freitag ausgeliefert werden. Dumm nur, dass ich wahrscheinlich nicht viel darüber werde berichten können.

Screenshot: Kompatibilitätstest Android Wear

Mein treues Fairphone ist dazu nämlich zu alt. Oder zu doof. Oder beides. Die Companion App von Android Wear hätte nämlich gerne Android 4.3, aber die Macher des Fairphone sehen sich derzeit nicht in der Lage, auf Android 4.4 zu aktualisieren. Apple-Jünger, freut euch, ihr habt es besser.

Übrigens gibt es durchaus Gerüchte, dass viele MediaTek-Androiden von kitKat abbeißen dürfen. Nur eben leider nicht mein Fairphone.

Immerhin hat mein Experiment in Sachen Fairness länger gedauert als gedacht.

Donnerstag, 26. Juni 2014

Lektüre-Tipp: Entdecker - Android-Apps und das Web

In der seit heute erhältlichen iX 7/2014 findet sich mal wieder ein Artikel von mir: Entdecker - Android-Apps und das Web. Im World Wide Web warten unerschöpflich viele Informationen auf den Smartphone-Entwickler. Daten und Dienste soll man in die eigene App integrieren. Ich zeige Ihnen, wie Sie sicher und schnell auf Webinhalte zugreifen können.

Sonntag, 22. Juni 2014

Nostalgie: Tomy Arcade Racing (Mini Arcade)

Heute reisen wir ein bisschen in die Vergangenheit. Ich stelle Ihnen ein Tabletop Game vor, mit dem ich als Kind gerne und oft gespielt habe. Ob das Tomy Arcade Racing in den späten 70ern oder frühen 80ern erschienen ist, kann ich leider nicht mehr genau sagen. Ich denke, ich werde wohl so um die zehn Jahre alt gewesen sein. Weiter unten gibt’s ein kleines Video.
Tomy Arcade Racing #1
Tomy Arcade Racing #2
Tomy Arcade Racing #3
Tomy Arcade Racing in Aktion
Unfassbar, wie viel Spaß wir damals mit so wenig hatten. Können Sie sich vorstellen, dass heutige Kids länger als 3 Minuten dran bleiben? Sehr schade, oder?

Mittwoch, 18. Juni 2014

Zurück in die Zukunft

Screenshot: Min Time unter Froyo

Soo, Min Time steht in Google Play nun auch für die etwas älteren Androiden zum Download bereit. Geräte ab Froyo (API Level 8), also Android 2.2, sollten die App nun finden und installieren können. Über Rückmeldungen würde ich mich natürlich freuen.

Montag, 16. Juni 2014

Zeitmaschine

Ein Leser hatte mich gefragt, warum denn ein simples Programm wie Min Time unbedingt Android 4 braucht. Die Frage ist natürlich legitim. Da ich sie aus dem Stegreif nicht beantworten konnte, habe ich versucht, die App unter Android 2.x lauffähig zu bekommen. Das Setzen des Attributs android:minSdkVersion auf 8 (Froyo) war schnell erledigt. Die Android Development Tools haben dann noch (logischerweise) das Setzen des Vollbildmodus android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen" moniert. Dann konnte es losgehen. Mit …Sie ahnen es… rrrrummmmmssss. Es gab ein paar Stellen, an denen Android auf die Nase gefallen ist, weil ich Methoden aufrufe, die es in Android 2.x noch nicht gibt. Das passiert, weil ich das Ziel-SDK (android:targetSdkVersion) auf 19 (KitKat) gelassen hatte. Statt Versuch und Irrtum hätte es natürlich auch das Herabsetzen dieses Wertes getan. Naja. Große Hämmer sind eigentlich gar nicht dabei gewesen: das Abfragen, ob das Gerät einen Vibrationsmotor hat, geht erst ab API Level 11. Das Konfigurieren eines Menüeintrags setShowAsAction() ebenfalls. Und da ist dann noch das Ermitteln der Anzeigegröße. Das von mir verwendete getSize() gibt es erst ab API Level 13, vorher muss man getHeight() und getWidth() verwenden. Das war’s.

Wann es die Version in Google Play gibt, kann ich noch nicht versprechen. Ich bin auch, das gebe ich offen zu, zwiegespalten, was den Support alter Versionen angeht. Auf der einen Seite gibt es viele Leute, die gerne mit Ihrem “alten” Gerät arbeiten. Das ist lobenswert. Warum sollte man etwas wegwerfen, das prima funktioniert. Und in meinem ganz konkreten Fall ist der Aufwand ja minimal. Auf der anderen Seite sind Tests eine Tortur. Je komplizierter die App, desto aufwendiger die Überprüfung. Und: so viele Geräte kann man eigentlich gar nicht vorhalten…

An dieser Stelle nochmals herzlichen Dank an @timothep.

Sonntag, 15. Juni 2014

Noch einmal Min Time: diesmal mit bbbbbrrrrrummmmmm

Die gestern veröffentlichte Version 1.02 hatte einen kleiner Fehler: beim Auswählen einer Zeitverteilung wurde die Gesamtdauer nicht aktualisiert. Da ich nach der Veröffentlichung schon weiter gebastelt hatte, habe ich mich entschlossen, den Fehler gleich in der neuen Version zu beheben. Die brummt bei Phasenübergängen. Leider ist hierfür eine Berechtigung erforderlich. Ich bin aber zuversichtlich, dass dies nicht zu sehr stört. Und Werbeeinblendungen sind mit ihr ja auch nicht möglich. Zwinkerndes Smiley Viel Spaß also mit Min Time 1.03.

Samstag, 14. Juni 2014

Min Time 1.02 mit Speicherfunktion

Screenshot von Min Time

Min Time hat eine Funktion zum Speichern und einfachen Aktivieren von Zeitverteilungen erhalten. Außerdem zeigt die kleine App nun die Gesamtzeit, also die Summe der dreiPhasen, an.

Montag, 9. Juni 2014

TKWeek 1.7.6

Screenshot von TKWeek 1.7.6

Es gibt eine neue Version von TKWeek. Im Modul Informationen über ein Jahr können jetzt die Jahreszeiten eingesehen werden. Außerdem sind ein paar neue Nationalfeiertage hinzu gekommen. Haben Sie Ideen, Wünsche oder Anregungen? Lassen Sie es mich wissen…

Freitag, 30. Mai 2014

Min Time verfügbar



Seit ein paar Stunden ist Min Time im Play Store verfügbar. Ich freue mich sehr über konstruktive Rückmeldungen.


Donnerstag, 29. Mai 2014

Gestatten…: Min Time

So ziemlich das Nervigste am App-Schreiben ist… das Namen erfinden… Nicht nur, dass es praktisch für jedes Thema schon eine App gibt – nein, auch alle Namen dieser Welt scheinen bereits vergeben zu sein. Ich versuche dann immer aus der Not eine Tugend zu machen und bastle Wörter. Beispiel: Eine App, die Vortragenden in bestimmten Intervallen signalisiert, wie viel Zeit noch zur Verfügung ist, könnte Timer, Stoppuhr, Eieruhr, Countdown, Time Keeper, … heißen. Gibt’s aber alles schon. Deshalb nenne ich meine Min Time. Ich weiß, dass Sie sich jetzt verlegen am Kopf kratzen. WIE?? Sie können es als Abkürzung für Minimalistic Timer lesen, oder als Wortspiel, denn im Englischen heißt In Time rechtzeitig. Und das möchte doch jeder Referent werden, nicht wahr? Hier also Min Time:

Die App "Min Time"

Die Idee ist, einen Vortrag in drei Bereiche zu teilen: in die lange Komfortzone, die Zielgerade und die “Der letzte Satz”. Man stellt die drei Werte ein, tippt auf Start und unterhält das Publikum. Am ende des Vortrags tippt man einmal auf den Bildschirm. Fertig. Das Ding ist winzig klein, schnell und vor allem unkompliziert. Haben Sie Lust bekommen, es herunterzuladen? Bald, nur noch ein paar letzte Pinselstriche. Smiley

Mittwoch, 7. Mai 2014

Ein kurzer Blick auf den 7. Meilenstein von Eclipse 4.4

Seit Anfang Mai ist der siebte Meilenstein von Eclipse 4.4 verfügbar. Damit ist Luna feature complete. Hier ein paar Dinge, auf die wir uns freuen können (nicht alles kam mit M7). Zunächst ist da natürlich das dark theme. Gefühlt hat der Trend ja in der Ecke der Kreativ-Software begonnen und hat dann (Achtung, grottenschlechtes Wortspiel) auf die IDEs abgefärbt. Ich weiß nicht, wie es Ihnen geht, aber ich werde mit dem dunkel-düsteren Ambiente nur langsam warm.

dark theme #1

dark theme #2

Was wirklich schön ist: die Icons wurden auf das .png-Format umgestellt und wirken weniger kantig. Sehen Sie sich doch mal den obigen Screenshot in Originalgröße an.

Eine prima Sache ist die neue geteilte Ansicht in Editoren:

geteilte Ansicht in Editoren

So macht das gleichzeitige Arbeiten von weit auseinander liegenden Abschnitten im Quelltext endlich Spaß.

Nett ist auch die Unterstützung von Java 8-Sprachfeatures. *** Update: *** Zum Beispiel kann Eclipse aus anonymen Klassen lambda-Ausdrücke machen:

Codebeispiel im "alten" Stil

Aufruf von Quick Assist

Code nach der Umwandlung

Damit das funktioniert, muss ein Java 8 als “Standard VM” hinzugefügt werden.

Installed JREs

Anschließend müssen Sie den Compiler compliance level auf 1.8 setzen. Vorsicht: ggf. projektspezifische Einstellungen beachten.

Compiler compliance level

Sonntag, 4. Mai 2014

Lese-Tipp: Digital Adaptation

Cover von Digital Adaption
Was ist nötig, um Unternehmen fit für das digitale Zeitalter zu machen? Wie müssen Strukturen in Organisationen oder Firmen beschaffen sein, um gut im adressierten Markt aufgestellt zu sein? Welchen Herausforderungen müssen sich Management und Mitarbeiter stellen, um ihre Produkte erfolgreicher als Mitbewerber verkaufen zu können? Das Buch Digital Adaptation von Paul Boag möchte Web Professionals bei der Transformation ihres Unternehmens helfen. Dabei ist dem Autor durchaus bewusst, dass die eigentlichen Macher ohne umfassende Unterstützung des Managements nur begrenzt erfolgreich sein können. Was bleibt ist, dort Einfluss zu nehmen, wo es möglich ist.

Das Buch ist in lockeren, leicht zugänglichen Englisch geschrieben. Es ist hübsch gemacht, viele Bilder und Grafiken lockern den Text auf. Das Lesebändchen ist gut gemeint, ich habe es aber nicht gebraucht und Digital Adaptation in einem Rutsch durchgelesen. Oft bringt Paul Boag seine lange Erfahrung in Gestalt von Beispielen ein, das macht seine Erklärungen und Schlussfolgerungen stichhaltig und nachvollziehbar. Gelegentlich sind Szenarien bewusst konstruiert, skizzierte Personen wirken dann plakativ. Natürlich dient die Nutzung von Stereotypen dem Zweck, das “Deshalb klappt es hier gut, dort nicht” zu verdeutlichen. Hätte für meinen Geschmack weniger sein können. Unbenommen davon ist das Bändchen ein tolles Buch. Selbst wer nicht direkt Einfluss auf die digitale Umgestaltung einer Firma oder einer Organisation Einfluss nehmen muss, profitiert von der Darstellung des wachsenden Einflusses, den Digitalisierung auf alle Bereiche auswirkt. Fazit: kaufen!

Das Buch kann bei Smashing bestellt werden.

Donnerstag, 1. Mai 2014

Eclipse Trivia

Am 25. Juni 2014 möchte die Eclipse Foundation mit Luna ihr neuntes Simultaneous Release bereit stellen. Die Grundidee, die Veröffentlichungstermine von mehreren Schlüssel-Projekten zu bündeln, um ein problemloses Zusammenspiel der Komponenten zu gewährleisten, ist seit Callisto beibehalten worden. Die Zahl der teilnehmenden Projekte ist seit 2006 stetig gestiegen.

Callisto 3.2 30.06.2006 10
Europa 3.3 29.06.2007 21
Ganymede 3.4 25.06.2008 23
Galileo 3.5 24.06.2009 33
Helios 3.6 23.06.2010 39
Indigo 3.7 22.06.2011 62
Juno 4.2 / 3.8 27.06.2012 71
Kepler 4.3 26.06.2013 72
Luna 4.4 25.06.2014 ??

Auf der offiziellen Simultaneous Release-Seite werden für die ersten beiden Sammelreleases andere Daten genannt (Callisto: 26.06.2006 und Europa: 27.06.2007). Ich habe im Web recherchiert und gebe die aus meiner Sicht korrekten Werte an. Sieht man sich die Datumswerte an, stellt man fest, dass sich der Veröffentlichungstag auf den vierten Mittwoch im Juni eingependelt hat. Juno sollte ursprünglich 72 Projekte beinhalten, es wurden letztlich aber nur 71, wie Wayne Beaton in einem Post erklärt. Eine Besonderheit an diesem Release war auch, dass zum ersten Mal die Plattform-Version 4 ausgerollt wurde. Zusätzlich stand aber auch eine Version auf der Basis von Eclipse 3.8 zum Download bereit. Zum Schluss noch etwas (sehr wahrscheinlich bekannte) Namenskunde: Kallisto, Europa und Ganymed sind Jupitermonde. Dieser Planet könnte noch oft Namensgeber für Eclipse-Versionen sein, denn ihn umkreisen (mindestens) 67 natürliche Satelliten. Apropos Namensgeber: der Entdecker mehrerer Jupitermonde wird mit Eclipse 3.5 geehrt. Auf Galileo folgen Helios, Indigo und Juno – die Reihenfolge der Buchstaben im Alphabet ist ja auch für Android-Versionen beliebt.

Kennen Sie noch mehr Fakten über Eclipse? Schreiben Sie doch einfach einen Kommentar. Ich freue mich darauf.

Mittwoch, 30. April 2014

Sonntag, 27. April 2014

Pimp my FairPhone

In meinem Post über 100 Tage FairPhone hatte ich das Dilemma mit dem zu kleinen internen Speicher beklagt. Dabei ist die Lösung eigentlich simpel: in dem von mir ebenfalls verlinkten Foren-Thread wird mehrfach auf die Damen und Herren von xda developers verwiesen. Dort findet sich eine Schritt-für-Schritt-Anleitung. Diese enthält den Link zu einer Software, die das FairPhone umpartitioniert. Man muss sich nur trauen, die App zu installieren und zu starten. In einer Auswahl kann man zwischen mehreren Speicherzuteilungen wählen. Ich habe mich für 4 GB internen Speicher entschieden. Nach dem obligatorischen Boot in den Recovery Mode von Android folgt man ein paar Anweisungen. Und hat dann ein frisch aufgesetztes System ohne Speichersorgen. Ganz wichtig: bei der Prozedur gehen alle Daten verloren, ein Backup auf eine SD-Karte ist also angeraten. Da ich ein frisches System wollte, habe ich mich dagegen entscheiden.
Android-Bootoptionen
Mein FairPhone nach der Umpartitionierung
Für mich hat sich dieser kleine Eingriff gelohnt; mein FairPhone hat wieder die Apps drauf, die ich brauche. Man darf gespannt sein, was nach dem angekündigten Softwareupdate passiert. Ich werde natürlich berichten.

Samstag, 26. April 2014

Tipp: Was es mit NPEs in updateInputState() auf sich hat

Ich wurde von einer Firma angeschrieben, die im Auftrag eines Geräteherstellers Fehlern in Android-Apps nachgeht. Die Fehlerbeschreibung schien zunächst unspezifisch; nachstellen konnte ich das Problem nicht. Allerdings liefert die Developer Console ja zum Glück tiefere Einblicke in die Abstürze:

 

java.lang.RuntimeException: Unable to pause activity {com.thomaskuenneth.android.birthday/com.thomaskuenneth.android.birthday.TKBirthdayReminder}: java.lang.NullPointerException
at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3204)
at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3159)
at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:3137)
at android.app.ActivityThread.access$900(ActivityThread.java:165)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1337)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5450)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at android.widget.TimePicker.updateInputState(TimePicker.java:846)
at android.widget.TimePicker.onSaveInstanceState(TimePicker.java:561)
at android.view.View.dispatchSaveInstanceState(View.java:13117)
at android.view.ViewGroup.dispatchSaveInstanceState(ViewGroup.java:2822)
at android.view.ViewGroup.dispatchSaveInstanceState(ViewGroup.java:2828)
at android.view.ViewGroup.dispatchSaveInstanceState(ViewGroup.java:2828)
at android.view.ViewGroup.dispatchSaveInstanceState(ViewGroup.java:2828)
at android.view.ViewGroup.dispatchSaveInstanceState(ViewGroup.java:2828)
at android.view.View.saveHierarchyState(View.java:13100)
at com.android.internal.policy.impl.PhoneWindow.saveHierarchyState(PhoneWindow.java:1930)
at android.app.Dialog.onSaveInstanceState(Dialog.java:405)
at android.app.TimePickerDialog.onSaveInstanceState(TimePickerDialog.java:216)
at android.app.Activity.saveManagedDialogs(Activity.java:1269)
at android.app.Activity.performSaveInstanceState(Activity.java:1187)
at android.app.Instrumentation.callActivityOnSaveInstanceState(Instrumentation.java:1240)
at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3185)
... 12 more

Warum sollte eine interne Methode meine App abstürzen lassen? Erstaunlicherweise liefert die Suche nach updateInputState hilfreiche Treffer, unter anderem diesen. Dort steht:

When running on an ICS device, but using against an old build target the TimePicker shows the older AM/PM button instead of the newer spinner. This is dealt with in code for backwards compatibility - TimePicker.java attaches listeners either to mAmPmButton or mAmPmSpinnerInput accordingly. There are checks in most applicable to handle the appropriate case. The function updateInputState() however has no check and is blindly assuming mAmPmSpinnerInput isn't null. This will cause a force close on apps using it that have an active InputMethodManager at the time (line 553 in TimePicker.java).

TKBirthdayReminder ist in der noch aktuellen Version 2.0.6 tatsächlich auf API Level 7 eingestellt, läuft also im Kompatibilitätsmodus. Ich werde den jetzt mal auf 17 setzen und sehen, was passiert. Haben Sie ähnliche Phänomene beobachtet? Schreiben Sie mir…

Donnerstag, 24. April 2014

100 Tage FairPhone

Am 15. Januar 2014 wurde nach einer gefühlten Ewigkeit mein FairPhone geliefert. Ich hatte meine ersten Eindrücke in diesem Post mit Ihnen geteilt. Seitdem sind etwa 100 Tage vergangen. Ich habe das Gerät jeden Tag intensiv genutzt: als Telefon, als Adressbuch, als Notizspeicher, als Kamera… Dabei hat sich das nicht ganz leichte Klötzchen als durchweg alltagstauglich erwiesen. Die Verarbeitung ist gut, die Laufzeit des Akkus passt gerade noch (man übersteht einen Tag ganz gut), die Kamera ist ok, die Software halbwegs stabil.
Ein ganz dickes Problem gibt es aber:
Screenshot_2014-04-23-10-45-58
Das FairPhone hat zu wenig Speicher. Das mag sich merkwürdig anhören, wenn man liest, dass es mit 16 GB ausgestattet ist. Der so genannte interne Speicher ist 1 GB groß. Und der macht Kummer. Denn man kann viele Apps in den so genannten Telefonspeicher verschieben, aber nicht alle. Schon bei wenigen installierten Apps tauchen bei mir regelmäßig Meldungen auf, dass dieser oder jener Dienst aufgrund von Speichermangel gestoppt wird. Im Forum gibt es hierzu einen laaaaaangen Thread, in dem der Tenor der FairPhone-Angestellten ist, dass das alles ja gar nicht so schlimm sei. Ist es aber leider. Es scheint, dass sich im Laufe der Zeit Müll ansammelt, weil z. B. Logfiles anschwellen. Die Option, den internen Speicher bei einem Software-Update zu vergrößern, wurde bisher nicht genutzt.
Für mich schränkt das die Nutzbarkeit des Geräts leider ziemlich ein. Zumal ich kein App-Junkie bin, der unzählige Programme hortet.
Hergeben werde ich das FairPhone deshalb aber nicht. Das Experiment geht weiter…

Dienstag, 22. April 2014

Sonntag, 20. April 2014

WinMerge-Tipp: Vergleichen von Word-Dateien

Nach dem Buch ist vor dem Buch. Bevor die eigentliche Arbeit losgeht, bringt man seine Werkzeuge auf den aktuellen Stand. Früher hieß dies Bleistift spitzen oder neues Farbband in die Schreibmaschine einlegen. Und heute? Hardware aktualisieren. (Kleiner Scherz) Da ich mir erst vor kurzem einen der letzten Vaio Pro 13 gegönnt habe, fehlt dem guten Stück noch die eine oder andere Software. WinMerge ist seit langem eine der Perlen, die auf keinem Rechner fehlen sollte. In der stabilen Version 2.14.0 ist ein Plug-in zum Vergleichen von Word-Dateien enthalten. Hier ein Screenshot:

eingebautes WinMerge-Plug-in

Seit wann dem so ist, weiß ich offen gesagt nicht. Ich hatte bislang nämlich xdocdiff von S. Kohno verwendet. Heute bin ich eher zufällig über das eingebaute Modul gestolpert. An dem ist praktisch, dass es (wie auf dem Screenshot zu sehen ist) bestimmte Attribute wie Autor und Beschreibung der Worddatei anzeigt. Dies tut xdocdiff nicht. Allerdings geht dieses meiner Wahrnehmung nach erheblich schneller zu Werke. Die Installation von xdocdiff ist schnell erledigt. Nach dem Entpacken des Archivs werden die beiden Dateien xdoc2txt.exe und zlib.dll in das WinMerge-Installationsverzeichnis kopiert. Die Datei amb_xdocdiffPlugin.dll muss in das Unterverzeichnis MergePlugins.

Tipp: Achten Sie darauf, dass vor dem Vergleichsvorgang im Plugins-Menü das automatische Entpacken aktiviert ist. Und: um xdocdiff zu deaktivieren, einfach amb_xdocdiffPlugin.dll in .dl_ umbenennen und Plugins neu laden auswählen.