Android ist weltweit eines der meistgenutzten Betriebssysteme für mobile Geräte und bietet eine umfangreiche öffentliche API, die Entwicklern zahllose Möglichkeiten zur Gestaltung von Apps eröffnet. Doch abseits der streng formellen Funktionen und klar dokumentierten Schnittstellen gibt es innerhalb der Android API zahlreiche humorvolle Elemente und versteckte Easter Eggs, die kaum bekannt sind, aber immer wieder für Schmunzeln sorgen. Diese humorvollen Merkmale sind nicht nur nette Auflockerungen, sondern sie erzählen auch Geschichten aus der Entwicklung, zeigen die Kreativität der Entwickler und spiegeln eine menschliche Seite technischer Systeme wider. In diesem Text wollen wir genau diese humorvollen und kuriosen Bestandteile der öffentlichen Android API näher beleuchten und ihre Hintergründe verständlich machen. Viele dieser Beispiele sind für reguläre Nutzer unsichtbar und richten sich speziell an Programmierer, die API aufrufen und in ihren Projekten einsetzen.
Eines der bekanntesten Beispiele ist die Methode ActivityManager.isUserAMonkey(). Die Bezeichnung mag zunächst amüsant wirken – verständlich, da der Ausdruck suggeriert, dass ein Affe die Benutzeroberfläche gerade „verwurstelt“. Doch dahinter steckt ein ernstzunehmender Entwickler-Tool-Mechanismus, nämlich der UI Exerciser Monkey, der zufällige und wilde Eingabesequenzen simuliert, um Apps auf Herz und Nieren zu prüfen. Diese Funktion, die bereits seit Android 2.
2 Froyo öffentlich zugänglich ist, kann erkennen, ob aktuell der Monkey läuft. So können sensible Funktionen während der automatisierten Tests gesperrt werden, um unerwünschte Folgen wie einen ungewollten Notruf zu verhindern. Das zeigt einen praktischen Nutzen und ein lustiges Namenskonzept zugleich, bei dem die Entwicklungserfahrung in einen augenzwinkernden Methodenamen geflossen ist. Eine eher spielerische Funktion ist UserManager.isUserAGoat().
Die Beschreibung der Methode klingt absurd, denn sie bezieht sich darauf, ob der Benutzer teleportiert wird – ein klarer Hinweis auf ein internes Entwickler- oder Dev-Humor-Element. Ursprünglich gab die Methode immer falsch zurück, wurde aber mit der Veröffentlichung von Android 5.0 Lollipop dahingehend verändert, dass sie prüft, ob das populäre Spiel Goat Simulator auf dem Gerät installiert ist. Dieses Spiel, das auf absurde und skurrile Bocksimulation mit vielen Überraschungen setzt, brachte die Entwickler offensichtlich zu einem kleinen Scherz. Ab Android 11 wurde diese Funktion dann wieder so eingeschränkt, dass Apps, die Android 11 oder höher anpeilen, immer false zurückbekommen, um keine unerlaubten Informationen preiszugeben – man könnte humorvoll sagen, um die „Privatsphäre der Ziegen“ zu schützen.
Der Begriff UserManager.DISALLOW_FUN beschreibt eine noch unterhaltsamer klingende Richtlinie, die seit Android 6 Marshmallow existiert. Sie erlaubt es Geräten oder Systemadministratoren, „Spaß zu verbieten“. Während die Dokumentation das mit ironischem Unterton formuliert, ist diese Richtlinie tatsächlich implementiert und kann beispielsweise dazu genutzt werden, bestimmte verspielte Funktionen wie Easter Eggs oder Spiele zu deaktivieren. Besonders in Umgebungen wie Schulen oder Unternehmen kann dies sinnvoll sein, um Ablenkungen zu minimieren.
Dennoch ist die Wortwahl originell und erinnert an humorvolle Figuren wie GLaDOS aus der Spielserie Portal, die ebenfalls Spaß und Freude strikt untersagen würden. Eine der wohl bizarrsten und unterhaltsamsten Funktionen findet sich in der Chronometer-Klasse: isTheFinalCountdown(). Wer diese Methode aufruft, löst eine sofortige Aktion aus, welche kein technisches Feature betrifft, sondern stattdessen das berühmte Musikvideo des 80er-Jahre-Hits „The Final Countdown“ der Band Europe öffnet. Ein solches Verhalten ist bewusst ungewöhnlich und dient transparent als Spaßfunktion, die Neugierige belohnt, die versteckte Features entdecken wollen. Es zeigt die kreative und manchmal fast verspielte Seite des Entwicklerteams, das mit seinen Apis nicht nur praktisch denken, sondern auch ein wenig Austesten ihrer Humorvorstellung ausdrücken wollte.
In ganz ähnlichem Stil gibt es in der PackageManager API das Merkmal FEATURE_TOUCHSCREEN_MULTITOUCH_JAZZHAND. Fünf berührungen auf einmal werden hier als „Jazz-hände“ bezeichnet – ein kultureller Anspielung auf eine übertriebene und auffällige Handbewegung aus dem Showbusiness. Auch die Benennung von Log.wtf() ist eine charmant offene Bezeichnung, wobei WTF in diesem Fall als „What a Terrible Failure“ ausgeschrieben wird. Sie dient dazu, schwerwiegende Fehlerprotokolle zu kennzeichnen und hat damit selbst in der ernsten Fehlersuche einen sympathischen Namen erhalten.
Weiterhin ungewöhnlich ist der Eintrag AdapterViewFlipper.fyiWillBeAdvancedByHostKThx(). Die informelle, fast schon saloppe Namenswahl für diese Methode, die von Systemfunktionen im Widget-Handling benutzt wird, erinnert daran, dass hinter Codes immer echte Menschen stecken, die manchmal einfach den erstbesten lustigen Ausdruck wählen, wenn keine bessere Idee da ist. Die Tatsache, dass solcher Name sogar im öffentlichen API-Bereich landet, macht diese Anekdote besonders reizvoll. Klingt es nicht verrückt, dass die Android Binder IPC Architektur einen Transaktionstyp namens TWEET_TRANSACTION und einen weiteren LIKE_TRANSACTION hat? Diese Funktionen, die als interne Nachrichten dienen sollten, haben keine direkte praktische Funktion, sondern beziehen sich mit einer Ironie auf Twitter-Funktionen.
So heißt es beispielsweise, dass LIKE_TRANSACTION dazu dienen soll, das Selbstwertgefühl einer App zu steigern. Hier schwingt ein leichter Humor mit, der das ansonsten nüchterne Interprozess-Kommunikationssystem auflockert. Die SensorManager-API enthält konstanten Bezeichnungen in Bezug auf Gravitationswerte, die über die Erde hinausgehen. Neben realen Körpern unseres Sonnensystems tauchen hier spaßhaft fiktive Anspielungen auf, wie GRAVITY_DEATH_STAR_I, der Gravitationswert der berüchtigten Todesstern-Waffe aus Star Wars, oder GRAVITY_THE_ISLAND, eine Reminiszenz an die mysteriöse Insel der Serie Lost. Solche Anspielungen zeigen nicht nur den Popkultur-Hintergrund der Entwickler, sondern auch die Bereitschaft, einzelne technische Bestandteile humorvoll zu veredeln.
Vielleicht am beeindruckendsten ist der versteckte Layout-Tag <blink> in Androids LayoutInflater. Dieses Element lässt alle darin enthaltenen Kinderflächen blinken, ganz so wie der längst aus der Mode gekommene HTML blink-Tag aus den Anfangstagen des Webs. Dass solch eine Funktion immer noch Bestandteil der Codebasis ist, nachdem sie weder offiziell dokumentiert ist noch empfohlen wird, ist ein Zeugnis für den chaotisch-amüsanten Charme, der heute noch in vielen Open-Source-Projekten vorhanden ist. Diese humorvollen Fundstücke im Android Code und in der API zeigen, dass technische Systeme und Entwicklerumgebungen nicht vollkommen steril und mechanisch sein müssen. In manchen Momenten geben sie lustige Einblicke in die Arbeitswelt der Programmierer, in ihre kreativen Pausen und in die kleine rebellische Freude am Einfügen von Witzen an unerwarteten Stellen.