The Analogous Watchface was my introduction to developing for the Android Wear platform. I had recently picked up an LG G Watch R and, as with all electronics I own, I was keen on customizing it. As with all of my projects, I started with a question: why do I want to build this? While the process of creation is something I enjoy, I will rarely create something for that sole purpose. I looked at the options on Google Play and found that they were not meeting my particular interests for a couple reasons:
– The designs tried to be too much like an analog watch and felt disingenuous on a digital screen
– The designs felt too crowded and busy for such a small space
– I enjoyed having a new design regularly, something that no one watch seemed to have the option for.
These issues informed the next part of my process: the functional specifications. I found that the ability to customize and have a different watch every day was something I really valued, so I made it a functional requirement of the design. I made a rule against the use of complications (the smaller displays inside the watchface) to reduce clutter. I focused on bright colors and contrast to take advantage of the digital screen. I was still interested in keeping the structure of an analog watch (tick marks, hands, etc.) so I made sure that was called out in the spec.
Due to my experience with Android development, coding for Android Wear was quite easy. I transitioned from Eclipse over to Android Studio, a derivative of IntelliJ IDEA. The tools felt quite robust, particularly the debug logging mechanisms. The emulators could have been a little faster to boot, but I was not taking advantage of the image snapshotting that is offered. I particularly enjoyed the beta testing and testing pool features offered by the Google Play developer console. It felt like the Dev Console wasn’t quite completely ready for Wear apps and watch faces at the time I submitted mine, but it has since caught up in functionality with the other form factors it caters to.
A watch face is implemented as a service that is triggered on a timer, which then draws on a canvas. It was fun to create object models for each graphical object, and easy to pass around the canvas to get them drawn before the next timer tick. Drawing things was a simple task that used some basic plotting methods to get everything displayed. The really interesting part was giving the watch the level of configuration that I enjoy. Using the Datamap API was easy based on the amount of documentation for it. The idea of the Datamap was something I found very interesting in the wearables space. As an abstracted map of data storage that is shared transparently between two devices, it could have uses for any internet connected devices attempting to talk to each other. There were small bugs in the Android Wear implementations of certain list controls that had to be worked around for the configuration screens that took me some time to work around. All in all it came out to be a very smooth interaction to change the configuration of the watch.
For photos and more information about the Watch Face, check it out on the Google Play Store:https://play.google.com/store/apps/details?id=com.ccsquared.ccortes.ccsawatchface