The MetaWatch is a sweet-looking programmable watch that can be paired with an Android device via Bluetooth in order to bring some of the smartphone’s functionality to the watch, reducing the need to haul out your phone to check on an alert.
The MetaWatch was originally developed at Fossil but the line was spun off into its own privately-held company. The units cost $199 for either the digital or analog versions. The digital watch has a 96×96 TFT dot-matrix display, while the analog version has two tiny OLED displays and the dial. Both have an accelerometer, a light sensor, vibration motor, a bluetooth radio, as well as a stainless steel case and leather band. The digital watch has six buttons while the analog has three.
When I got my MetaWatch I quickly came to the conclusion that I couldn’t actually use it because (silly me) I lack an Android phone. So I recruited a Android hacker friend of mine, McSteve, to play around with it. He downloaded the Metawatch Manager (MWM) from the company website. This is an application that handles communications between the computer and the watch. McSteve described how it works:
The MWM exposes a pretty simple API. The MWM runs as a service, and listens for Intents broadcast from other running applications. An application can, by broadcasting one of these Intents, send a notification to the MetaWatch with custom screen contents and optional vibration. Another Intent allows an app to switch the watch into “Application Mode”, where the app can have exclusive control over the MetaWatch’s screen and buttons. Button press events are sent as Intents broadcast from the MWM, which interested applications can receive.
McSteve is working on an Android app that will look up bus times, with the thought being that the next arrival time could be displayed. With a MetaWatch, he could check on the time in a dodgy neighborhood without hauling out an expensive smartphone. Plus, with winter approaching, the MetaWatch’s buttons will be easier to manipulate than a touch screen.
The current problem I am attempting to deal with is that displaying anything on the MetaWatch screen seems to require painting the entire screen at once with a 96×96 pixel bitmap. Therefore, to display text, it has to first be painted onto a bitmap using an appropriate font, and sent to the watch. Fortunately, a set of fonts is available from metawatch.org/developers, and reading the MetaWatch Manager source code provides plenty of insight on how to paint text into a buffer suitable for sending to the watch.
The MetaWatch product line has some fantastic possibilities and I’m looking forward to all of McSteve’s cool hacks, as well as those of the other early adopters. It even looks like MetaWatch will even produce custom units (either the entire watch or just the guts) if you do develop something cool that you want to sell.