Spielereien mit Android, NFC, Tasker und Google – Teil 1

Okay, hier ist es – zugegebenermaßen – in letzter Zeit etwas langweilig. Das sehe ich auch so und manchmal belastet mich das auch ein wenig, aber: Besserung ist in Sicht. Doch, wirklich, große Dinge werfen ihre Schatten voraus, spektakuläre Weiterentwicklungen haben unaufhörlich begonnen und „demnächst“ wird es mir vermutlich auch wieder mehr Spaß machen hier aktiv zu sein.

Bis dahin berichte ich einfach mal von meinen Spielereien mit Android, mit welchen ich nach dem spontanen Ableben meines geliebten iPhone 5s begonnen habe. Wie es dazu kam? Nun, mein iPhone wollte irgendwann nicht mehr Laden (auch nicht mit einem ganz neuen Kabel und auch nicht in yoga-ähnlichen Winkeln zwischen Lightning-Anschluss und Kabel, was zumindest am Anfang noch funktionierte) und die Garantie- bzw. Reparaturabwicklung via Telekom war nur bedingt optimal. Tja, das ist halt des Schicksals eines Geräts mit einem Alter von mehr als einem Jahr und bei fehlendem Carepack. Während also DHL noch mit der Telekom darüber stritt, wann und wie mein Gerät denn überhaupt ins Reparaturcenter kommt, musste ich mich um eine Alternative kümmern. Um erreichbar zu bleiben, kramte ich also in den Tiefen unseres Altbestandes und zauberte meine HTC Sensation aus den Tiefen des Vergessens. Kurz dachte ich auch an das ebenfalls noch vorhandene Motorola Milestone, aber dieses war hardwaretechnisch leider noch etwas „überholter“.

Nachdem das Sensation ja eh „einige“ Zeit im Schrank verbrachte, war klar, dass es ein Firmware-Upgrade nötig hatte. Interessanterweise war ja vor mehr oder weniger kurzer Zeit gerade Android 5 erschienen, welches dank entsprechender Enthusiasten in der XDA Developers Community auch für eben jenes Altgerät zur Verfügung steht. Die Installation war einfach; das Resultat ernüchternd. Akkulaufzeit: Ja, ein halber Tag reicht doch eigentlich für alle, oder? Bluetooth-Geräte: Trennen sich einfach sporadisch. GPS-Ortung: Nun, nicht an Tagen die auf „G“ enden. Allgemeine Systemperformance: Keine Ahnung, wie ich es geschafft habe, das Ding zwischenzeitlich nicht an die Wand zu werfen. Insgesamt musste ich feststellen, dass ich definitiv nicht der Typ für alte Hardware mit neuer Software bin (oder vielleicht habe ich beim Sensation auch einfach nur ein Montags-Gerät erwischt).

Also begann das wilde Vergleichen: Samsung Galaxy, Nexus, Xperia, HTC One M8, Oneplus One .. alles gar nicht so einfach, wollte ich doch kein riesiges Gerät. Meine Präferenzen verdichteten sich im Bereich Nexus 5 sowie Sony Xperia Z3 Compact. Als es dann ein wirklich gutes Angebot für ein werksneues Xperia Z1 Compact für nur 150€ gab, schlug ich vor dem Hintergrund damit ein neues Spielzeug zu erwerben kurzerhand zu. Meine ersten Eindrücke vom Xperia waren wirklich wirklich gut: Recht hochwertige Verarbeitung, kompakte Abmessungen, angenehme Haptik, überdurchschnittlich lange Akkulaufzeit .. absolut beeindruckend, was man für so wenig Geld an Gegenwert erhält.

Tadaaa - das ist es. Das Xperia Z1 Compact vor motivierend grünem Hintergrund
Tadaaa – das ist es. Das Xperia Z1 Compact vor motivierend grünem Hintergrund und mit „tempered Glass“ Schutz-„Folie“

Ausgeliefert wurde das Gerät mit Android 4.irgendwas und nach einer relativ schmerzfreien Update-Orgie über mehrere Zwischenschritte lief das Compact zumindest auf Android 4.4, was die Kompatibilität mit meinem vivosmart wiederherstellte. Danach verbrachte ich einige Zeit damit diverse Hüllen, Folien und magnetischen Ladekabel zu testen, bevor ich ein Setup fand, welches zumindest recht komfortabel und praxistauglich ist. Einige Wochen später stellte sich dann die typische Android-Qualität ein (wobei ein Hardwaredefekt natürlich nichts mit der Software zu tun hat) und der Vibrationsmotor des Geräts begann Geräusche zu machen. Mittlerweile ist jede Aktivität des Motors lauter als ein herkömmlicher Klingelton, weshalb mein Umfeld bereits dazu übergegangen ist mir die Mitführung etwaiger „Entspannungsspielzeuge“ zu unterstellen. Ich vermute, dass hier eine Reklamation fällig ist… Ansonsten wurde vor kurzer Zeit Android 5 offiziel für das Z1 Compact freigegeben (auf Grund des besagten Garantiefalls wollte ich das Gerät bisher nicht rooten und auch keine unautorisierten Updates durchführen), welches ich ebenfalls bereits installiert habe. Die Akkulaufzeit ist nun zwar gefühlt etwas kürzer, Bluetooth-Geräte neigen erneut gehäuft zu Übertragungsstörungen und die Gesamtperformance scheint ein wenig schlechter geworden zu sein, doch hat Sony das Betriebssystem meiner Meinung nach trotzdem sehr gut angepasst. Meine generellen Ausführungen über das Gerät möchte ich damit auch beenden: Ich habe vermutlich noch nie ein Nicht-iPhone gesehen, dass derart perfekt auf iPhone-Kunden angepasst war. Die Bildschirmtastatur, die Tastenanordnung, die Eingabegenauigkeit, die Art und Qualität der Wortvorhersage, die Lupenfunktion des Cursors, der Mail-Client .. alles fühlt sich sehr sehr stark nach Cupertino an, was es Umsteigern leicht macht.

Das Z1 Compact hier mit seiner "Ultra Slim Backcover". Ganz ernsthaft, eine der besten Hüllen die ich jetzt genutzt habe. Bis auf die kleine "Welle" in der Mitte - noch so ein Garantiefall
Das Z1 Compact hier mit seiner „Ultra Slim Backcover“. Ganz ernsthaft, eine der besten Hüllen die ich jetzt genutzt habe. Bis auf die kleine „Welle“ in der Mitte – noch so ein Garantiefall

Aber warum bin ich denn nun eigentlich bei Android gelandet? Schließlich wurde mein laut Telekom-Servicecenter „nicht sichtbarer Schaden außerhalb der Garantie“ für eine Pauschalzahlung von rund 280€ behoben bzw. das Gerät getauscht, so dass das iPhone 5s durchaus wieder bei uns ist. Da wäre zum einen die Tatsache, dass ich iOS zumindest für den Moment einfach „durchgespielt“ habe. Ich verwende die Geräte mit dem angebissenen Apfel seit dem iPhone Classic (welches in seinem Dock in einer Glas-Vitrine in unserem Arbeitszimmer seinen Ehrenplatz eingenommen hat) und hatte einfach mal Lust auf etwas Neues. Jedes Menü, jede Option, jedes Features kam mir einfach so vertraut vor. Zum anderen hatte ich Lust auf ein wenig „Do it your self“ und wollte schon immer mal mit NFC (Near Field Communication) spielen – und spätestens da ist Apple aktuell ziemlich raus. Bevor ich also auf meine NFC-Spielereien eingehe noch ein riesengroßer, vermutlich jedoch nur temporär bestehender Vorteil von Android: Wer WhatsApp Web – also den im Browser verwendbaren Client für den beliebten Messenger WhatsApp – mal genutzt hat, der weiß, was ihm vorher gefehlt hat. Zumal die Umsetzung derart gut ist, dass ich sie sogar für gelungener als die Integration von iMessage unter MacOS halte.

Hier mal das besagte, heilige iPhone Classic und das Z1 Compact nebeneinander
Hier mal das besagte, heilige iPhone Classic und das Z1 Compact nebeneinander

Also .. was treibe ich denn so mit NFC? Primär verwende ich sehr preiswert erwerbbare NFC-Tags (sprich dünne Antennen in Aufkleberform) um ortsgebunden Aktivitäten auszulösen. So kann ich zum Beispiel mein Telefon an einen Tag in meinem Auto halten und diverse Aktionen (Bluetooth an, WiFi aus, Lautstärke auf Maximum, Stauscanner starten) rein durch den Vorgang der Annäherung auslösen. Ich kann zum Beispiel auch eine bestimmte Spotify-Playlist wiedergeben lassen, wenn ich mein Xperia kurz an einen Tag in der Nähe des Verstärkers halte. Oder aber ich lasse das Telefon auf lautlos stellen, wenn es nach 22:00 Uhr ist und (jetzt wird es cool) der Magnetsensor das Vorhandensein meines magnetischen Ladekabels erkennt. Okay, die letztgenannte Aktion wird manchmal auch ausgelöst, wenn ich das Smartphone auf eine unserer Standboxen lege .. alles eine Frage der Schwellwerte 😉

Sowas nennt der Zubehörhandel gern "drahtloses Laden". Naja, praktisch ist das magnetische Kabel dennoch, da ich sonst immer die Abdeckung des USB-Ports öffnen müsste. Das Z1 ist nämlich wasserdicht.
Sowas nennt der Zubehörhandel gern „drahtloses Laden“. Naja, praktisch ist das magnetische Kabel dennoch, da ich sonst immer die Abdeckung des USB-Ports öffnen müsste. Das Z1 ist nämlich wasserdicht.

Um diese Funktionen zu erreichen, musste ich mehrere Applikationen und deren Funktion kombinieren: Tasker (Link zu Google Play) erlaubt die Definitionen von eigenen Aktionen, die unglaublich vielfältig sein können. Trigger (Link zu Google Play) ermöglicht es Tasker-Aktionen auszuführen, wenn ein NFC-Tag erkannt („gescannt“) wird. Und „TeslaLED“  (Link zu Google Play) ermöglicht es Tasker die LED der Kamera aufblinken zu lassen, um z.B. bestimmte Aktivitäten auch optisch zu bestätigen. Klingt alles etwas kompliziert und unintuitiv, ist es auch. Aber genau das wollte ich ja auch, denn sonst hätte ich bei iOS bleiben können 🙂

Ein Anwendungsfall den ich etwas näher vorstellen möchte, fällt für mich in den Bereich Quantified Self – der digitalen Selbstvermessung. Und zwar hat mich schon länger interessiert, wie lange ich so benötige, um typische Fahrstrecken – z.B. zum Kunden oder ins Büro – zurücklegen. Natürlich gibt es hierzu diverse „Fertig-Apps“, aber ich habe mich für die Erfassung der Werte in einer Art Excel-Datei interessiert. Und jetzt wird es wieder cool. Ich kann nämlich Google Docs benutzen um eine entsprechende Datenablage zu erhalten, Google Forms um ein Erfassungsformular zusammenzubasteln, Tasker um über HTTP-Aufrufe mein Formular anzusprechen und Trigger um Tasker zu aktivieren, wenn ich mein Telefon im Auto an den Tag halte. Dazu noch etwas Kosmetik und zwei Tags im Fahrzeug (in meinem Fall ein Tag an der Mittelkonsole bzw. an deren Seite für das „Einchecken“ und ein Tag im Kofferraum zum „Auschecken“, an welchem ich eh „vorbeikomme“, wenn ich meine Tasche auslade, und fertig ist semi-automatisierte Erfassung meiner Fahrvorgänge. Für die Interessierten möchte ich den Vorgang folgt grob skizzieren – im Prinzip finden sich aber alle Informationen in diesem Beitrag auf Google Groups: Link:

  1. Auf Google Docs / Google Sheets / Google Tabellen (Klick) mit Hilfe des großen Plus-Buttons eine neue Tabelle anlegen. In diese bzw. in ein Tabellenblatt selbiger werden später die Daten eingefügt. Man kann diesen Schritt auch überspringen und die neue Tabelle beim Anlegen des Formulars erstellen – wie man mag. Ich nutze eine Tabelle, in der ich unterschiedliche Formularergebnisse für unterschiedliche „Prokollierungen“ vereine
  2. In GoogleDocs über Datei –> Neu ein neues Formular anlegen. Das Wichtigste zuerst: Die Adresse des Formulars (der „Form“) einfach aus derAdressleiste des Browsers heraus kopieren – diese benötigen wir später inTasker

    Hier besorgen wir uns die Adresse des Formulars. Das "edit" müssen wir später entfernen
    Hier besorgen wir uns die Adresse des Formulars. Das „edit“ müssen wir später entfernen
  3. Nun über „Add Item“Formularfelder je nach Bedarf einfügen. Als Typ eignet sich „Text“; ich verwende z.B. Felder für Art (Einchecken / Auschecken aus dem Fahrzeug), Datum, Uhrzeit, Standort,Batterylevel (einfach weil mich interessiert, wie voll derAkkustand des Geräts nach bestimmten Zeiten bzw. Fahrten ist). Ob man Datum und Uhrzeit überhaupt über ein Feld dediziert erfassen möchte, bleibt jedem selbst überlassen. In derProtokolltabelle in GoogleDocs wird sowieso derZeitstempel der Datenübermittlung automatisch in einer eigenen Spalte eingefügt

    Das fertige Formular - als Anregung
    Das fertige Formular – als Anregung
  4. Jetzt wird es etwas filigran: Oben auf „View live form“ klicken und über Rechtsklick –> Seitenquelltext anzeigen (o.ä., ich beziehe mich auf Google Chrome) den Quellcode des Formulars öffnen. Nun kurz volle Konzentration, um die sog. ID des jeweiligen Feldes zu ermitteln. Hierzu nach einer Quelltext-Zeile suchen, die der folgenden ähneln sollte: „<input type=“textname=“entry.1019673021value=““ class=“ss-q-shortid=“entry_1019673021dir=“autoaria-label=“Art title=““>“ Spannend ist hierbei der Wert „1019673021“ denn dieser ist besagteID, welche wir später inTasker für jedes zu füllende Feld benötigen

    Auf dem Weg zur ID der Formularzellen
    Auf dem Weg zur ID der Formularzellen
  5. Okay, der am PC durchzuführende Teil ist nun beendet. Es gilt nun auf dem Android Gerät Tasker zu starten und einen neuen Task anzulegen. Anschließend muss ein Aktion vom Typ „HTTP Post“ angelegt werden.Unter Server:Port die in Schritt 2 kopierte Adresse ohne abschließendes „/edit“ einfügen (also die ID des Formulars).
    Unter Path stes „formResponse“ eintragen,
    Unter Data / File gehören nun nacheinander mehrere Zeilen für die Befüllung der einzelnen Formularfelder mit den zugehörigen Daten. Hierzu über entry.ID das Feld ansprechen und diesem mittels = „Wert“ den entsprechenden Wert zuordnen. Die Werte besorgen wir neben der Verwendung von statischen Texten (z.B. „Ankunft am Auto“) über Tasker Variablen (Klick).In meinem Fall stehen wir hier nun also fünf Zeilen mit den Werten
    entry.1234567890=Enter Car
    entry.1234567891=%Date
    entry.1234567892=%Time
    entry.1234567893=%Loc
    entry.1234567894=%Batt

    Die Aktion in Tasker
    Die Aktion in Tasker
  6. Nun einfach die Aktiontestweise durch einen Klick auf den „Play“-Button unten links inTasker starten und auf GoogleDocs zuschauen, wie sich das für das Formular definierteZieltabellenblatt mit Werten füllt

    So könnte das Ergebnis im Praxisbetrieb aussehen
    So könnte das Ergebnis im Praxisbetrieb aussehen

Nun kann man natürlich noch ein paar Aufwertungen durchführen und z.B. die Übermittlung der Daten durch ein Popup oder ein Blinken der Kamera-LED bestätigen lassen. Außerdem muss die Aktion aus Tasker in Trigger mit einem NFC-Tag verknüpft werden, damit man die frisch definierten Aktionen auch in der Tat durch Bewegung des Smartphones zum Aufkleber auslösen kann.

Ferner schlage ich vor, die o.g. genannte Aktion unter Verwendung der gleichen Parameter (Copy & Paste ist ganz toll) zur Erzeugung einer zweiten Aktion zu verwenden, die dann genutzt wird, um ein Verlassen des Fahrzeugs zu erfassen. Hierzu sollte dann in der ersten Zeile nicht „Enter Car“ sondern z.B. „Leave Car“ eingetragen werden – alle sonstigen Felder bleiben 100%ig gleich. Ich benutze wie gesagt einen zweiten NFC-Tag zur Ansteuerung dieser Aktion, alternativ kann man mit sogenannten Schaltern arbeiten (1. Scan = Check In; 2. Scan = Check Out), aber das klappt nicht so toll, wenn man ab und an vergesslich ist. Eine weitere Möglichkeit stellt die Verwendung eines zusätzlichen Dialogs dar (im Tasker Jargon „Szene“ genannt), der durch das Scannen eines Tags geöffnet wird und den Aufruf verschiedener Aktionen mit Hilfe von Piktogrammen ermöglicht. In meinem Büro klebt z.B. ein NFC-Tag auf meiner Dockingstation, mit welchem ich einen Dialog öffnen lasse, über den ich Logeinträge für Kommen und Gehen erzeuge.

Druck auf die obere Schaltfläche: Ankunft; Druck auf die untere: Gehen.
Druck auf die obere Schaltfläche: Ankunft; Druck auf die untere: Gehen (damit assoziiert: entsprechende Aktionen in Tasker).

Außerdem habe ich die Erfahrung gemacht, dass %Loc als Standortangabe via letztem bekannten GPS-Fix manchmal nicht allzu toll für mich funktioniert. An einigen Stellen bin ich zur Verwendung von %Locn (Standort basierend auf genutztem Funkmast) übergegangen, was recht gut zu funktionieren scheint.

Eine bittere Pille gibt es noch: Ohne Root kann man die Aktivitäten nur dann auslösen, wenn das Telefon nicht gesperrt ist. Klingt erstmal doof, ist in der Praxis aus meiner Sicht aber zu verschmerzen. Außerdem rate ich davon ab den NFC-Tag z.B. in der Handyhalterung zu verbauen. Ich habe das mit meinem Kenu Airframe getestet und war nur sehr begrenzt zufrieden damit, da der Tag jedes Mal neu gescannt wurde, wenn ich das Telefon entsperrt habe .. dann doch lieber ein separater Ort für den Tag, an den man das Telefon kurz hält, bevor man es in die Halterung steckt.

Ich hoffe die Ausführungen waren einigermaßen gut nachvollziehbar und motivieren zum Nachbauen. Das Zusammenspiel der verschiedenen Softwarekomponenten und die Erhebung der Google Form IDs aus dem Quellcode ist sicherlich nicht ganz trivial, aber wenn man der Anleitung genau folgt, sollte es eigentlich keine Probleme geben. Ferner sei gesagt, dass das beschriebene Setup bei mir seit mittlerweile vier Monaten sehr zuverlässig funktioniert.

Das war es erstmal von den Android / NFC / Tasker-Basteleien Part I .. ein paar weitere Fingerübungen mit Google Docs und Google Script werde in einem separaten Folgebeitrag veröffentlichen.