© DrHitch/Shutterstock.com
Android Wear

1 Watchfaces gestalten und implementieren


Egal ob Pebble, Android Wear oder Apple Watch: Nichts regt die Kreativität der ­Entwicklergemeinde so an wie die Aussicht auf die Entwicklung eigener Watchfaces.

Die Anzeige der aktuellen Zeit (und gegebenenfalls des aktuellen Datums) ist eine der Hauptfunktionen einer Uhr und war somit für lange Zeit der eigentlich Grund, warum wir uns ein Stück Metall (oder Plastik) mit einem Lederband um den Arm geschnallt haben. Die sprunghafte Verbreitung von Smartphones, die so viel mehr können als nur zu telefonieren, hat allerdings eine Phase eingeleitet, in der deutlich weniger Menschen als zuvor eine Uhr tragen. Wozu eine Uhr tragen, wenn man durch einen Blick auf den Lockscreen des Smartphones schnell die aktuelle Zeit sehen kann? Smartphones sind eben nicht nur „a touchscreen musicplayer, a phone, and an internet communication device“, sondern so viel mehr. Die Bedeutung von Uhren als Zeitmessinstrumente hat damit spürbar abgenommen, für viele ist das Tragen einer Uhr zu einem Fashion Statement geworden.

Doch was, wenn man Uhren auf die gleiche Weise zu multifunktionalen Informationsgeräten umgestalten würde, wie dies für Mobiltelefone geschehen ist? Die Integration von Sensoren wie GPS, Schrittsensor, Magnetometer, Herzfrequenzsensor und einem Mikrofon in Verbindung mit der Tatsache, dass eine Uhr direkt am Körper getragen wird, macht Smartwatches zu mobilen Sensoren-Arrays und ermöglicht Anwendungsfälle, die mit Smartphones alleine nur umständlich umzusetzen wären.

Android Wear ist seit seiner Einführung kontinuierlich weiterentwickelt worden. War es in der ersten veröffentlichten Vorabversion gerade möglich, Benachrichtigungen von einem Smartphone auf die gekoppelte Smartwatch zu senden, so wurde mit dem offiziellen Release die Möglichkeit eröffnet, Apps zu schreiben, die direkt auf der Smartwatch laufen und mittels des Wearable Data Layer API [1] mit der Außenwelt kommunizieren können. Vor einigen Monaten wurde dann ein offizielles Watchface API [2] veröffentlicht, das die Entwicklung von energieeffizienten und ressourcenschonenden Watchfaces ermöglicht. Zur Google I/O 2015 wurde mit _Always On_ [3] ein Feature eingeführt, das die Entwicklung von Apps mit länger laufenden Interaktionen (z. B. in Fitness- oder Shopping-Apps) erleichtert. Android Wear bietet somit eine Vielzahl von Möglichkeiten, Informationen darzustellen (Notifications, Micro-Apps, Watchfaces).

Im vorliegenden Kapitel beschäftigen wir uns mit der Entwicklung von Watchfaces. Neben einer Einführung in das Watchface API und einigen Tipps und Tricks zur Entwicklung von energieeffizienten Watchfaces gehen wir auch auf den kreativen Prozess ein. In den nachfolgenden Kapiteln beschäftigen wir uns dann mit der Entwicklung von Apps für Android Wear sowie dem Zugriff auf die unterschiedlichen Sensoren von Android Wearables und die Möglichkeiten der Spracheingabe.

Architektur

Bevor wir uns Gedanken über Gestaltung und Implementierung eines eigenen Watchface machen, werfen wir zunächst einen Blick auf die Architektur von Android Wear Watchfaces. Neben einem besseren Verständnis des später folgenden Quellcodes ermöglicht uns dies, die Möglichkeiten des API und die daraus resultierenden Rahmenbedingungen für das Design einzuschätzen.

Android Wear Watchfaces werden als Service implementiert und registriert. Zur Implementierung eines Watchface müssen die Klassen CanvasWatchfaceService und die darin enthaltene innere Klasse CanvasWatchfaceService.Engine abgeleitet und implementiert werden (Abb. 1.1).

Wenn ein Watchface aktiv ist, ruft das System die Methoden der von CanvasWatchfaceService.Engine abgeleiteten Klasse auf, wenn sich z. B. die Zeit oder der Zustand der Uhr geändert hat (etwa wenn sie vom Interactive Mode in den Ambient Mode gewechselt hat).

friese_androidwear_1.png

Abbildung 1.1: Architektur eines Android Wear Watchface

Gestaltung eines eigenen Watchface

Vor der Implementierung eines Watchface sollte man sich Gedanken über die kreative Gestaltung des Zifferblatts sowie die Informationsarchitektur machen: Welche Informationen sollen dargestellt werden, in welcher Beziehung stehen sie zueinander? Wie soll das Zifferblatt gestaltet sein – soll beispielsweise ein klassisches Uhrenmodell nachgeahmt oder das Branding einer bekannten Marke umgesetzt werden? Es versteht sich von selbst, dass die Rechte der entsprechenden Markeninhaber beachtet werden müssen. Für die Entwicklung eigener Ideen empfehlen sich analoge Werkzeuge wie Papier und Stift ebenso wie digitale Tools wie Photoshop, Illustrator oder Sketch. Photoshop-Benutzer können die kostenlose Android-App Pixl Preview [4] verwenden, um bereits während des Designs eine Livevorschau auf der Uhr begutachten zu können. Unser Watchface soll neben den Zeigern für Stunden, Minuten und Sekunden auch das aktuelle Datum anzeigen – in Abbildung 1.2 ist das Ergebnis zu sehen.

friese_androidwear_2.png

Abbildung 1.2: Das fertige Watchface

Designrichtlinien für Android Wear

Android Wear Devices gibt es in vielen verschiedenen Formen und Technologien. Beim Design eines Watchface müssen daher ein paar Dinge beachtet werden:

  • Bildschirmform: Es gibt nicht nur Android Wear Devices mit runden oder eckigen Bildschirmen – einige runde Bildschirme haben ein so genanntes Kinn am unteren Bildschirmrand. Bekanntestes Beispiel für diese Bauform ist die Moto 360.
  • Active vs. Ambient Mode unterstützen: Im aktiven Zustand können die Anzeigeelemente des Watchface in voller Farbauflösung dargestellt und animiert werden. Im Ambient Mode wird die Leuchtkraft des Displays verringert, und Watchfaces sollten in diesem Modus auf die Verwendung von Farbe verzichten. Standardmäßig erhalten Watchfaces in beiden Modi mindestens einmal pro Minute die Gelegenheit, den Bildschirminhalt zu aktualisieren. Wenn es erforderlich ist, den Bildschirminhalt häufiger zu aktualisieren (z. B., um einen Sekundenzeiger darzustellen), muss man selbst einen entsprechenden Timer konfigurieren. Der Ambient Mode wird von Android Wear verwendet, um Energie zu sparen und trotzdem die wichtigsten Informationen darzustellen – man sollte in diesem Modus also tunlichst auf häufige Aktualisierungen verzichten und nicht benötigte Bildschirmelemente ganz ausblenden.
  • In den verschiedenen Android-Wear-Uhren kommen unterschiedliche Displaytechnologien mit unterschiedlichen Energieverbrauchscharakteristiken zum Einsatz. Generell gilt die Empfehlung, im Ambient Mode auf die Verwendung von Farben zu verzichten und dafür zu sorgen, dass 90 Prozent oder mehr des Bildschirms schwarz sind. Auf Uhren mit OLEDs verschiebt Android Wear den Bildschirminhalt in regelmäßigen Abständen um ein paar Pixel, um ein Einbrennen des Bilds zu verhindern. Dies gilt es beim Design zu beachten: Gegebenenfalls sollte man ein paar Pixel Abstand vom Rand des Displays einplanen. Einige Geräte versetzen das Display im Ambient Mode in einen so genannten „Low-bit“-Zustand, um durch die Reduktion des Farbraums Energie zu sparen. Auf solchen Geräten sollte im Ambient Mode das Anti-Aliasing abgeschaltet werden. Ebenso sollte auf die Verwendung von ausgefüllten Flächen im Ambient Mode verzichtet werden.
  • Platz für System-UI-Elemente vorsehen: Android Wear verwendet einige Icons und Labels, um dem Benutzer wichtige Zustände des Systems zu signalisieren, unter anderem für den Ladezustand der Batterie, den Airplane-Modus sowie den „OK Google“ Hotword Prompt. Nicht zu vergessen die am unteren Bildschirmrand eingeblendeten Benachrichtigungskarten. Die Positionierung bzw. farbige Hinterlegung dieser Elemente kann über entsprechende Methodenaufrufe beeinflusst werden, sodass sie möglichst wenig mit den Elementen des Zifferblatts im Konflikt stehen.

Vom Design zur Implementierung

Da die Darstellung einiger Watchface-Elemente vom aktuellen Status der Uhr abhängig ist, hat es sich als hilf...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang