OK Google!

2014-07-03 14.37.21Google hat einen Sprachassistenten, was die logische Konsequenz von Apples erfolgreicher Einführung von Siri war. Zwar hört der Assistent sehr gut, nur leider versteht er sehr schlecht und handelt darüber hinaus auch noch inkonsistent.

Anlass dieses Beitrags ist ein Video auf heise.de, in dem die neuen Wearables (in diesem Fall Smartuhren) vorgestellt werden. Gerade diese kleinen Geräte, die man problemlos jederzeit zum Mund führen kann und die aufgrund des winzigen Displays für Sprachsteuerung prädestiniert sind, sollten eine bequemere und effizientere Nutzung von Google-Diensten ermöglichen; leider ist das nicht der Fall. Schon im Video ist zu sehen, dass zwar die Wörter erkannt werden, der Sinn jedoch häufig nicht verstanden wird und dann – zur Frustration des Benutzers – in einer wenig hilfreichen Google-Suche endet. Insbesondere die Kontextsensitivität lässt stark zu wünschen übrig. Wenn ich in Hannover nach dem Weg zum Flughafen frage und dass Gerät über Funkzelle, WLAN und GPS ermitteln kann, dass ich in Hannover bin, dann ist eine Route zum Flughafen München eine wirklich dumme Idee.

Ich versuche seit einiger Zeit die Sprachsteuerung sinnvoll zu nutzen und scheitere regelmäßig. Besonders deprimierend ist es, wenn ein und derselbe Befehl, zu unterschiedlichen Zeiten mal funktioniert und mal nur die Google-Suche anwirft. Wenn man sich in einschlägigen Foren umhört, stellt man schnell fest, dass man nicht alleine ist und das Problem schon lange besteht. Insbesondere die Navigation scheint hiervon betroffen zu sein, während Erinnerungen zuverlässiger funktionieren.

Aus meinem Sprachbefehl „Erinnere mich morgen daran PayPal zu kündigen“ wurde die Erinnerung „Zu kündigen“, obwohl die Spracherkennung den Satz zu 100% korrekt erkannt hatte. Dass Google den erweiterten Infinitiv nicht umwandeln kann, ist zwar doof, aber hinnehmbar. Das Objekt hingegen wegzulassen, macht das ganze Feature nutzlos.
Wenn ich hingegen versuche genauere Angaben zu machen (Datum und Uhrzeit), hört die Spracherkennung gerne mitten im Satz auf, weil die (viel zu geringe) maximale Länge erreicht ist. Und wenn man es durch sehr schnelles Sprechen dann doch noch schafft, alle Informationen erkennbar auszusprechen, verschluckt sich Google am 24-Stunden-Format und setzt einen Besprechungstermin für „9 Uhr“ auf 21 Uhr. Mein Gerät ist selbstverständlich auf das 24-Stunden-Format eingestellt, aber Google scheint diese simple Information nicht auswerten zu können.

Apple ist auch nicht perfekt

Ein kleiner Trost bleibt mir aber, wenn meine Apple-Fan-Kollegen von Siri schwärmen. Die semantische Verarbeitung von Siri ist zwar viel besser, aber dafür hapert es wohl häufiger an der Spracherkennung selber. Es ist ein schwacher Trost, aber immerhin etwas 😉

Weiterlesen

Sehr gewöhnungsbedürftig

Screenshot_2014-06-30-02-28-05Gestern hat meine Neugier gesiegt und ich habe mir kurzerhand Android L auf mein Nexus 5 gepackt.

Das ganze schmeckt nach Alpha und ist definitiv nur was für Entwickler, die gucken wollen, dass ihre Apps auch wirklich laufen; für den normalen Einsatz ist es noch nicht zu gebrauchen, aber ich erwarte, dass sich das in den kommenden Wochen deutlich ändern wird. Das ist kein Vorwurf, sondern nur ein Hinweis an diejenigen, die mit dem Gedanken spielen, Android L jetzt schon auf dem privaten Smartphone einzusetzen.

Bei xda-developers gibt es eine schöne Liste bekannter Apps, die noch nicht funktionieren.

Screenshot_2014-06-30-02-28-30Mir persönlich gefallen die neuen Benachrichtigungen und der Taskmanager nicht. Die Benachrichtigungen werden zu Blöcken zusammengefasst „X Benachrichtigungen ausgeblendet“, was total willkürlich ist. Da werden 20 Mitteilungen von installierten Apps zusammen mit der Steuerung des mp3-Players zusammengefasst; man muss immer noch einen Klick mehr machen. Außerdem kann man nicht mehr alle Benachrichtigungen auf einmal bestätigen, sondern muss jede installierte App (über 80 bei mir) einzeln aus den Benachrichtigungen schubsen. Der Taskmanager sieht zwar hübsch aus, ist aber unglaublich schlecht! Bisher konnte man mit einem Klick die letzten 4-5 Apps sofort auswählen. Jetzt muss man sich durch diese Animation drehen, was deutlich länger dauert. Gleichzeitig ruckelt die Animation auch noch ordentlich, wenn im Hintergrund gerade irgendetwas wagt, tatsächlich sinnvolle Dinge zu tun.

Screenshot_2014-06-30-02-28-35Ich kann mir vorstellen, dass da mal ein wirklich gutes Produkt draus wird, aber im Moment ist es davon noch weit entfernt. Größte Bedenken habe ich, was den Einsatz im Arbeitsalltag angeht, weil viele einfache Dinge nun deutlich mehr Wischen und Klicken bedürfen.

Weiterlesen

Wieder Boss im eigenen System

grown-upAndroidMit dem letzten Update auf Android 4.4.3, das kürzlich bei mir reingeflattert kam, habe ich mal wieder meine Root-Rechte verloren, was nichts besonderes ist. Da ich heute zum ersten Mal seitdem Root brauchte, stellte mich das vor das Problem, ein verschlüsseltes System zu rooten; die Anleitungen im Internet sind dafür natürlich nicht ausgelegt.

Wie ich bereits vorher geschrieben hatte, war ich überrascht, dass das Android-Update so einfach funktioniert hat. Noch mehr überrascht war ich jetzt, dass das Rooten auf die harte Art ebenfalls funktioniert. Normalerweise kann Clockworkmod-Recovery sich selber vor dem überschreiben schützen und Root nach einem Update fixen; das klappte merkwürdigerweise diesmal nicht. Mit dem nun wiederhergestellten Stock-Recovery ließ sich allerdings SuperSU nicht per Update.zip einspielen. Nach einigem erfolglosen googlen habe ich dann einfach beide Lösungen kombiniert. Clockworkmod-Recovery erneut geflasht (das bleibt genau einen Bootvorgang bis es wieder überschrieben wird) und sofort damit SuperSU per ’sideload‘ (die Datenpartition ist ja verschlüsselt) installiert. Im Gegensatz zum Stock-Recovery lässt CWM die Installation nämlich zu und kann sich dann auch merkwürdigerweise selber wieder absichern.

Nachdem dann alles wieder funktioniert habe, habe ich folgende Meldung bei heise.de gelesen und musste ein Bisschen lachen, ob der Ironie 😉

Aber: Achtung!

Was hier als einfache Lösung erscheint ist auch ein veritables Sicherheitsproblem. Jede App kann auf diese Weise problemlos die Kontrolle über das System übernehmen und es sieht nicht danach aus, als ob die Mehrheit der Smartphones im Umlauf noch einen Patch bekommen würden.

Man kann davon ausgehen, dass Google sehr bald seinen Play-Store nach Apps durchsuchen wird, welche diese Lücke ausnutzen, und sie löscht. Apps, die aus anderen Quellen kommen, muss man hingegen in Zukunft so behandeln, als würden sie permanenten Root-Zugriff verlangen. Gerade „kostenlose Versionen“ von bekannten kostenpflichtigen Apps aus zwielichtigen Quellen sollte man den Zugang zum Smartphone verweigern, wenn man denn überhaupt auf die Idee kommen sollte, etwas anderes als den Play-Store zu benutzen.

Weiterlesen

Beeindruckt und Beängstigt

wpid-wp-1402009309538.pngIch habe gerade eben mein Android Smartphone von Android 4.4.2 auf 4.4.3 geupdatet. Das hat ganz problemlos funktioniert. Dabei hatte ich bereits ein Custom Recovery geflasht und das Telefon verschlüsselt. Ein Android Smartphone kann also von Drittanbieter-Software im verschlüsselten Zustand gepatcht werden, ohne dass man das Passwort eingibt.
Ich bin beeindruckt aber auch ein Stück weit verunsichert, in wie weit die Verschlüsselung denn überhaupt etwas taugt…

Update

Nach ein wenig Google-Fu bin ich nun schlauer. Androids Systemverschlüsselung betrifft nicht die Firmware; diese bleibt vollständig unverschlüsselt. Alles, was nach einem Factory-Reset noch da ist, ist unverschlüsselt. Die persönlichen Daten sind also tatsächlich sicher. Allerdings kann man die Firmware eines entsperrten Gerätes manipulieren ohne das Passwort zu kennen. Das gilt aber immer zumindest für den Teil, der das Passwort einliest und den Bootvorgang steuert. Es gilt wie immer: ein Gerät, das man aus der Hand geben musste, ist potentiell kompromittiert und nicht mehr vertrauenswürdig.

Weiterlesen

Security braucht Usability

encrypted_file_iconEndlich verbreitet sich die Erkenntnis, dass Security nur funktionieren kann, wenn der Endverbraucher entsprechend unterstützt wird in Entwicklerkreisen. Viel zu lange haben wir uns alle mit schlechter Software abgefunden und gewettert, dass sie niemand außer uns benutzt. Meinen PGP-Key habe ich meiner Familie immer noch nicht gegeben, einfach weil ich es nicht verantworten kann, sie mit derlei Software zu belasten. Aber es ist Besserung in Sicht!

Threema

Der Kauf des sympathischen Instant Messengers WhatsApp durch die Fratzenkladde hat selbst in meiner Verwandtschaft für Unruhe gesorgt. Menschen, die mehr Angst davor haben, dass ihre Häuserfassaden bei Google zu sehen sind als dass Geheimdienste ihre Videochats belauschen, fangen tatsächlich an sich um ihre Datensicherheit zu kümmern. Spät, aber nicht zu spät. Der Trick ist, dass Threema kindereinfach ist. Und darauf kommt es an.

APG

Der Android Privacy Guard ist dank der Arbeit von Dominik Schürmann am nun wieder integrierten Fork OpenPGP-Keychain ein riesen Schritt weit nach vorne gekommen. Das Benutzerinterface ist sauber und intuitiv, es ist einfach einen Schlüssel zu importieren oder von einem Keyserver herunterzuladen und das Look-And-Feel entspricht dem moderner Apps. Dass Schlüsselexport und -import noch in unterschiedlichen Menus untergebracht ist, finde ich etwas merkwürdig, aber der Sprung ist schon gewaltig. Hierzu werde ich in den kommenden Tagen noch etwas mehr schreiben.

Im Allgemeinen

Bereits im Januar habe ich auf der Kryptoparty der Fachschaft I/1 zwei Vorträge gehalten. Eine kurze Einführung in Festplattenverschlüsselung mit TrueCrypt und einen – mir persönlich viel wichtigeren – Rant zum Thema Usability. Mein Fazit: Solange wir die Software nicht kinderleicht nutzbar machen, wird sie nicht genutzt. Man kann vom Endverbraucher nicht erwarten, sich mit den Grundlagen kryptografischer Systeme zu beschäftigen. Es muss funktionieren und Dinge, welche den Schutz ad absurdum führen würden, müssen ohne großen Tamtam unmöglich sein, jedoch dem Benutzer mitteilen, dass dies eben gewollt und wichtig ist.

Besonders freue ich mich, dass dieses Thema jetzt langsam auf die Tagesordnung kommt. Selbst in Interviews mit Tech-Managern1 kann man schon die ersten Vorsichtigen Töne in diese Richtung ausmachen.

Wir können es schaffen, flächendeckende Verschlüsselung in der Gesellschaft zu verankern. Es braucht nur wirklich brauchbare Software!

1 Ich finde den Link zu einem Interview mit einer Mozilla Managerin nicht mehr, die mir hier aus der Seele spricht. Wer weiß wovon ich rede: bitte Link in die Kommentare oder Mail an mich.

Weiterlesen

Meh – Android Studio

Da mein Kollege so begeistert vom Android Studio ist, wollte ich dann endlich auch mal umsteigen. Es sieht zwar schick aus und läuft stabil, aber leider bietet es keine vernünftige Unterstützung für Interprojektabhängigkeiten.

Ich habe eine zentrale Library, die ich nach und nach in meine Apps einbauen will und noch die ein oder andere Idee für eine neue App. Da die Library auch noch Work in Progress ist, möchte ich sie nicht jedes Mal als .jar bzw. .aar exportieren und in alle Projekte importieren und schon gar nicht X Versionen des Quelltextes in Y Projekte hineinkopieren. Das unterliegende Build-System hat zwar die Funktionalität, die ich brauche, aber eine IDE, bei der ich ständig im inneren Gedärm Skripte ändern muss, ist für mich keine Option.

Da es sich um eine early access preview handelt, kann man wohl niemandem Vorwürfe machen. Google kennt das Problem ich meine zwischen den Zeilen lesen zu können, dass man es in der finalen Version gelöst haben möchte. Bis dahin bleibe ich dann vorerst bei Eclipse.

Weiterlesen

Kein Vertrauen

FacepalmDie Idee hinter MEGA ist klar: Man will Geld mit Urheberrechtsverletzungen verdienen ohne selber in Probleme zu geraten. Das ganze funktioniert fast genauso wie Megaupload jedoch außerhalb der Zugriffsmöglichkeiten der US Behörden und mit einem kleinen Trick. Bei Megaupload wurden beliebige Dateien einfach hochgeladen und konnten von jedem mit dem richtigen Link wieder heruntergeladen werden. Allerdings hatten die Macher von Megaupload Zugriff auf alle Dateien und waren daher auch in der Lage die Dateien dahingehend zu untersuchen, ob sie urheberrechtlich geschütztes Material enthielten. Die Rechteinhaber konnten Megaupload einfach Hash-Werte bekannter Dateien, die nur von Ihnen veröffentlicht werden durften, übergeben und Megaupload war anschließend verpflichtet alle entsprechenden Dateien von seinen Servern zu löschen und auch zukünftig nicht mehr anzunehmen. Wenn aber gerade diese umsatzstarken Dateien verschwinden, bricht das Geschäftskonzept zusammen. Wenn man hingegen nicht gewissenhaft Verstöße gegen das Urheberrecht zu vermeiden versucht, kann man schnell Probleme mit Strafverfolgungsbehörden bekommen (Hausdurchsuchungen, Beschlagnahme von Domains, Auslieferungsverfahren, etc.).

MEGA soll das jetzt alles etwas chicer machen. Alle Dateien werden vom Benutzer individuell verschlüsselt; die Betreiber von MEGA bekommen die eigentlichen Dateien niemals zu Gesicht und sind demnach überhaupt nicht in der Lage, etwas gegen zukünftige Uploads geschützter Werke zu unternehmen. Nur wenn die Rechteinhaber sowohl Datei als auch Schlüssel benennen können, muss MEGA die Daten ggf. löschen. Da die Sicherheit durch die Ende-zu-Ende-Verschlüsselung als zentrales Merkmal des Dienstes vermarktet wird, kann man MEGA auch kaum verbieten, diesen Service so anzubieten. Einen Zwang die Dateien auch unverschlüsselt zu sichten, würde das Geschäftskonzept vernichten. Die Betreiber von MEGA sind aus der Schussbahn, solange man Ihnen keine Prämienzahlung für illegale Veröffentlichungen nachweisen kann.

Mich als Informatiker hat das System von MEGA besonders interessiert, weil es derzeit keinen kostenlosen Cloud-Dienst mit Ende-zu-Ende-Verschlüsselung gibt. Ich hätte MEGA gerne privat als Dropbox-Ersatz genutzt. MEGA ist aber gerade darauf nicht ausgelegt, da sich damit nicht so viel Geld verdienen lässt. Es gibt keine Software für MEGA die lokale Verzeichnisse automatisch mit der Cloud synchronisiert. Es gibt nur eine Webseite, welche den Zugriff auf den Dienst per Javascript realisiert. Das ist jedoch keine Lösung, da man bei jedem aufrufen der Webseite kontrollieren müsste, ob der Javascript-Code nicht serverseitig manipuliert wurde. Zwar kann man auch Clientsoftware manipulieren, aber das schlägt erst mit dem nächsten Update durch und ist schwierig individuell zu realisieren. Außerdem ist der Funktionsumfang Webseite alles andere als eine Dropbox-Alternative. Als Informatiker ist da die Lösung einfach: selber schreiben.

Leider war die erste Version der Dokumentation der offensiv angekündigten MEGA API ein schlechter Witz. Ein sehr schlechter Witz. Im Grunde war es ein Dokument, dass einem sagte: „Guck Dir unseren Javascript-Code an und fand mit dem Reverse-Engineering an.“ Daher habe ich erst mal die Finger davon gelassen, bis andere zumindest die Grundlagen erledigt hatten. Ein paar Monate später fing ich mit der Implementierung einer Android-App für MEGA an und konnte recht schnell Dateien hoch- und runterladen und MEGA-kompatibel ver- und entschlüsseln. Ich war gerade dabei weitere Dateioperationen und automatische Synchronisierung zu implementieren, als die MEGA-Macher alles über den Haufen warfen. Nach Monaten des Reverse-Engineerings sollte man nun eine C++ Bibliothek benutzen und bloß nichts anderes. Die Sicherheit nur Dateien hochzuladen, deren Attribute und Inhalt von der eigenen Software verschlüsselt worden waren, war dahin. Außerdem ist der Einsatz von C++ Bibliotheken unter Android jetzt auch nicht gerade eine Freude.

Ich stampfe daher das Projekt kurz vor der ersten Beta-Version ein. Ich habe keinerlei Vertrauen in die Betreiber von MEGA. Weder in die Qualität der Bibliothek (der Javascript-Code der Webseite ist brechreizfördernd) noch in die Zuverlässigkeit als API-Anbieter. Stattdessen gucke ich mir jetzt die neue Dropbox-API an, die vieles richtig macht.

Foto: laut Wikipedia gemeinfrei.

Weiterlesen

Android und die bösen Buben

In letzter Zeit häufen sich die Berichte über Maleware und Adware für Android wie dieser hier.

Ohne jetzt auf einzelne Programme einzugehen kann man sagen, dass Android insgesamt sehr sicher ist; alle Programme müssen vom Benutzer installiert werden und dieser muss auch die entsprechenden Rechte abnicken. Gerade an dieser Stelle achten allerdings manche Nutzer nicht genau genug darauf, was die App so alles machen will.

Wie kann ich mich schützen?

Der Schutz vor solcher Adware / Maleware ist grundsätzlich sehr einfach. Da bisher kein Programm es geschafft hat sich ohne Einwilligung des Benutzers zu installieren, kann man an dieser Stelle bereits viel Sicherheit herstellen, indem man nur Software installiert, die „wahrscheinlich sicher“ ist. Dazu gehört es beispielsweise keine kostenlosen Kopien von eigentlich kostenpflichtigen Programmen zu installieren; die Verlockung ein paar Cent zu sparen ist es wohl nicht wert sich Software aus einer dubiosen Quelle zu installieren. Google löscht solche Software auch regelmäßig aus dem Market. Auch Software, die sehr populär ist, ist potentiell sicherer, weil hier die Wahrscheinlichkeit, dass unerwünschte Funktionen entdeckt wurden, höher ist. Hier hilft es auch mal nach dem Namen der App zu googlen und nach negativen Berichten zu suchen. Eine Garantie liefert das natürlich nicht.

Der bessere Weg ist keine App zu installieren, die zu viele Rechte haben will, aber dann muss man im Zweifelsfall sich auch dazu entschließen auf eine App zu verzichten. Wenn eine App beispielsweise Zugriff auf Hardware (Audio) verlangt, es aber keinen offensichtlichen Grund gibt, warum die App Tonaufnahmen machen sollte, ist das zunächst mal verdächtig. Besonders zu beachten ist, dass die Tatsache, dass eine App keinen Zugriff auf das Internet haben will, nicht heißt, dass sie keine Daten nach Hause funken kann: es ist installierten Apps möglich den Browser zu nutzen, um Webseiten aufzurufen, und in diesen Aufrufen können auch Daten übermittelt werden.

Wie werde ich Maleware los?

Wenn man feststellt, dass man sich Maleware eingefangen hat, weil beispielsweise Werbung aufpoppt, die man nicht haben will, dann kann man das durch Deinstallation des verantwortlichen Programms beheben. Das entsprechende Programm zu finden kann etwas Probieren erfordern, aber in der Regel weiß man ja, was man kürzlich installiert hat und kann auch nachgucken, welche App die notwendigen Rechte hat. Momentan gibt es für Apps keine Möglichkeit sich gegen eine Deinstallation zu wehren.

Gibt es keine Virenscanner für Android?

Es gibt auch Virenscanner für Android, aber diese sind meiner Meinung nach im Moment eher eine Ressourcenverschwendung als eine wirkliche Hilfe. Selbst identifizierte Adware wird teilweise nicht angezeigt, so dass man glaubt sicher zu sein, selbst wenn man solch ein Programm installiert hat.

Was muss ich noch beachten?

Bei aller Vorsicht muss man immer bedenken, von dem die Software geschrieben wird. Die Facebook-App beispielsweise würde nach obiger Empfehlung wohl als potentiell sicher durchgehen. Zwar verlangt sie viele Rechte, aber das erwartet man wohl auch. Beispielsweise braucht diese App Zugriff auf das eigene Adressbuch um beim Anzeigen von Kontakten die entsprechenden Facebook-Profilbilder anzuzeigen; dieser Zugriff kann aber auch genutzt werden, um alle Daten des eigenen Adressbuchs zu Facebook hochzuladen. In der iPhone-Version der Facebook-App ist das tatsächlich der Fall und jedes Update der Android-Version kann dieses „Feature“ ebenfalls mitbringen. Ich verzichte daher bewusst auf den Komfort dieser App und nutze stattdessen die mobile Version von Facebook im Browser. Zwar haben dadurch die Kontakte in meinem Handy ihre schönen Facebook-Profilbilder verloren, was ich sehr schade finde, aber der Preis – potentiell Facebook alle meine Kontakte zu überantworten – erscheint mir einfach zu hoch.

Ein nicht zu unterschätzendes Einfallstor für Maleware ist übrigens der eigene Google-Account. Sollte es einem Angreifer gelingen Zugriff auf den Account zu erlangen, den man mit seinem Smartphone verbunden hat, kann dieser über das Internet Apps installieren und dabei auch alle Rechte aus der Ferne abnicken; das eigene Telefon ist also nur so sicher, wie der damit verbundene Google-Account. Sollte man auf seinem Smartphone auf einmal die Meldung bekommen, dass eine neue Software erfolgreich installiert wurde, und man weiß nicht, was das soll, ist es am sinnvollsten das Gerät erstmal auszuschalten und sich in seinen Account einzuloggen. Dort kann man dann erstmal nach dem Rechten sehen und ggf. sein Passwort ändern.

Fazit

Apps sind noch keine große Gefahrenquelle. Besonders offizielle Quellen – wie der Google Market – entfernen Apps, die beispielsweise teure SMS versenden – zügig und während der Installation muss man den Apps die entsprechenden Rechte einräumen. Andererseits verleitet diese scheinbare Sicherheit zu Sorglosigkeit. Wenn man bei der Installation von Apps genau hinguckt und sich im Zweifelsfall dazu durchringen kann eine App nicht zu installieren – auch wenn die Features noch so verlockend sind – und seinen Google-Account mit einem sicheren Passwort versieht, muss man sich keine Sorgen machen.

Weiterlesen

Global Tracker

Stallite (openclipart.org)Diese App protokolliert die Bewegungen des Benutzers. Ziel ist es nicht ein Spionageprogramm zu erschaffen (Gloabl Tracker meldet seine Anwesenheit in der Statusleiste an und startet sich nicht automatisch), sondern nach einer Städtereise eine Verfolgung der eigenen Schritte zu ermöglichen. Momentan arbeite ich noch daran, Positionsdaten verschiedener Quellen sinnvoll zu kombinieren. Die Datenbank und Google-Maps-Anbindung funktionieren bereits.

Weiterlesen

How-To: Splash Screen

Man sollte meinen, dass es hierzu bereits genug Anleitungen im Netz gibt. Leider ist das meiste davon nicht wirklich zu gebrauchen und unglaublich kompliziert. Häufig wird Code von anderen Platformen wiederverwendet, der in Android eigentlich nichts zu suchen hat, während Androids Hausmittel vollständig ignoriert werden.

Das Elegante an dieser Lösung ist, dass man keine Ahnung von Threads haben muss. Statt eigene Threads zu erstellen und sich um Race-Conditions sorgen machen zu müssen, benutzt dieser Code den von jeder Android-App vorgehaltenen Message-Handler, der auf dem UI-Thread läuft. Es kann daher zu keinem Konflikt zwischen dem ablaufenden Timer und einem Click-Event kommen.

public class Startup extends Activity implements Runnable, OnClickListener {
	private static final int SPLASH_DELAY = 3000;
	private boolean once = false;
	private Handler handler = new Handler();

	@Override
	public void onClick(View v) {
		run();
	}

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.startup);
		findViewById(R.id.StartupLayout).setOnClickListener(this);
	}

	@Override
	protected void onStart() {
		super.onStart();
		handler.postDelayed(this, SPLASH_DELAY);
	}

	@Override
	protected void onStop() {
		super.onStop();
		handler.removeCallbacks(this);
	}

	@Override
	public void run() {
		if (once) {
			return;
		}
		once = true;
		finish();
		startActivity(new Intent(this, MainEntry.class));
	}
}

Der Quelltext ist CC BY 3.0 by Volker Kamin

Der Splash-Screen wartet für 3000 Millisekunden oder bis man auf den Bildschirm tippt und startet dann die Activity MainEntry. Wird der Splash-Screen unterbrochen (Anruf, etc.) oder das Display gedreht, fangen die 3 Sekunden von vorne an, sobald der Splash-Screen wieder sichtbar wird.

Weiterlesen