20/03/2014

Any app, any time, Anymote!

Anymote as a complement to GoogleCast?


Anymote is a remote protocol to send android-intents and key-, touch and pointer-events to GoogleTV devices. It is needed for applications to pair with the GoogleTV device first to be able to send commands. As all commands get interpreted systemwide on the GTV-device and are not targeted at one specific application, it is a very powerful protocol!
Besides applications acting as classical tv-remotes, it empowers developers to build applications and media-experiences across devices and screens. Although there are some great apps and examples (f.e. Able Remote, GTV-for-Tasker or Chromemote) Anymotes potential never got used to its fullness, facing the small reach of GoogleTV and it's flawed reference implementation.  


Now, there is Chromecast. A really great multiscreen approach, using already established apps on your mobile devices as the main ui and letting the big screen simply open content from the web (basically specialized web-applications). I think there are three big advantages over Anymote:
  • the user doesn’t need to actively pair each mobile application to the target device
  • as a publisher/developer you don’t need to build a completely new application from scratch, just use the ones that are already out there in peoples hands.
  • communication in both directions (sender -> receiver and receiver -> sender)

Disadvantages however are in my opinion:
  • online/network dependency at any time (yeah ok, thats pretty negligible nowadays)
  • missing TV-signal integration (HDMI-passthrough) and with this the need to use your classic tv-remote again, instead of your highend allrounder, the smartphone/tablet
  • the fact that something you do on your mobile is always bond to one specific receiver application
  • physical constraints: no local persistence, low computing performance (compared to other entertainment devices we are used to nowadays), no possibility to extend the devices functionality


So for example demanding games are not possible with Chromecast. Although the basic idea of how it works just screams for multiplayergames. (Several people using their phones to have one, shared game-experience on the TV.) And gaming is not the only usecase that demands more power from the device. Just think about animated presentations or some more complex collaboration tools using the big screen in a team-meeting. There is a lot of potential in this!
I really want the tv experience to evolve and that is not just switching classic tv-channels with streaming web-content.
I don't think Chromecast is the final solution, but its showing us one important thing. And that is how to do the UX in the living room right!


But limiting it to just open single webapplications is, in my eyes at least, just limiting the possibilities about what the tv, the central media device in our living room can become. Don't get me wrong Chromecast is a great product, its cheap, its simple, it just works for what it is intended. Go and get it! But i think the tv can become more than that, like a multimedia-based, central interface for a future smarthome or a tool to do cooperative work in teams. I bet there are so much more usecases/possibilities for it, about which we just didn't think about yet. But for this to develop and mature, we need a open and established platform ...like Android!
So to spur all this, i thought why not make public what i already implemented for myself. Make Anymote more easy for developers and more seamless for users. Or in other words why does every app have to pair with GTV on its own? So An3Mote is a small app that just takes care of pairing and sending commands to GTV, using +Leon Nicholls Anymote-for-Java.
With this any other application can send simple Android broadcasts to push commands to GTV using the Anymote-protocol at any time.
There is no need for applications to pair itself or establish any connection at all. When An3Mote is installed, they can just send commands with a few lines of code (see examples here).
Join the tester community, register as a tester and download An3Mote from the Play Store. After that the two sample applications are able to work.






AndroidTV RemoteWidget




AndroidTV SW Extension for Sony SmartWatch2



I’m still using my GoogleTV nearly every day and really like, that it empowers me to control my whole device setup using just my Nexus7. No need to change HDMI-inputs or to use other remote controls. Developed initially a few months ago just because i wanted homescreen-widgets to control my tv, i now release it, as my little contribution to evolving tv-experience. So here are +An3Mote and a few of my private coding experiments as samples how to use it.

As An3Mote is just a small hobby project, it is still pretty basic and not that well tested. For the future it's planned to improve and make it open source. Testers using the sample application as well as using the simple BroadcastApi are very welcome of course. Just like any feedback (preferably via the testers community)!.


Thinking about Android for TV in the future: i hope it will support both, Anymote (without needed pairing) and GoogleCast. As Anymote could be used for system-wide commands, GoogleCast could handle application specific communication between devices.

What do you think?