Only on Android

Android lets you mash apps together. When you do, cool things start to happen.

I just published my third app on Google Play: a custom watch face for Android Wear based on the typeface we created for the FORM 2014 conference. Credit to Paul and Li Ko from the material design team in NYC for designing and animating the typeface — I didn’t do much beyond porting the animations to Android and wrapping it up with the very-simple watch face API.

But today, I want to talk about one specific feature in the watch face: the Muzei integration. I’ve talked about Muzei and its extension system in past articles, but this really takes it a step further. This integration truly embodies the power of Android as a platform for apps and… other platforms. You’ve heard about intents and deep-linking; this is like intents on acid.

Take a look at this screenshot, particularly what’s on the watch.

It’s the FORM watch face, with the Muzei theme set, showing the phone’s current wallpaper (which happens to be pulled from the Muzei HD Landscapes third-party art source), and with the digits colored based on the dominant colors in the artwork.

There’s a lot going on here… actually 5 “apps” (well, APKs) in total, three of which aren’t aware of the apps at the other end (Muzei HD Landscapes doesn’t know it’ll be shown on a watch face, and the watch face doesn’t care where the art came from). Here’s a high-level diagram of how this all works:

5 apps working together.

And a run-through of the 5 apps/APKs involved:

  1. The FORM watch face app, installed on the watch. It gets the latest Muzei artwork using the content provider described in #3 below.
  2. The FORM watch face configuration app, installed on the phone. There’s no icon for it in the app launcher, but if you press the settings cog for FORM inside the Android Wear app on the phone, this is the app you’ll see. It lets you change the watch face theme from your phone, communicating changes to the watch over Bluetooth.
  3. The Muzei watch app (built by the amazing Ian Lake), which contains a content provider that exposes the latest Muzei artwork to other apps on the watch, along with a very simple additional Muzei watch face.
  4. The Muzei phone app, which provides a wallpaper for your phone, and sends a downscaled version of the latest artwork to the Muzei watch app over Bluetooth. Like the watch app, it also offers a content provider exposing the latest artwork to other apps on the phone.
  5. The Muzei HD Landscapes art source, one of many art sources for Muzei available on Google Play and built with the Muzei Art Source API.

The end result is if you’ve got a phone and a watch, not only can you have the same constantly-updating wallpaper on both devices, but you can use a custom watch face that sits atop the same wallpaper (assuming the watch face developer has added Muzei support). No other platform to my knowledge offers this kind of depth in app integration.

If you think about it, Android lets you actually blur the line between “app” and “platform.” Android apps are just bags of pluggable components: UI screens, launcher icons, background services, content providers/consumers, event listeners, etc. In fact, much of the Android OS itself — things like the system status bar, home screen, calendar data provider, etc. — are just a bunch of crazy integrated components neatly sorted into bags we call “system apps.” When you start mashing the components of your app together with those of other apps in interesting ways, opening your components up to other developers, a lot of cool things can start to happen… not only for your users, but for the countless users of apps that integrate with you. Pretty awesome if you ask me.

Much credit again to Ian Lake again for the awesome content provider and wearable work for Muzei that made this possible.