Announcing: Your Last About Dialog (YLAD) Windows Phone 7 Pitfall: The Dispatcher and Deactivation

Announcing: Phone as a Remote Control

Published on Thursday, November 3, 2011 5:42:58 PM UTC in Programming & Tools

Shortly after I got my Windows Phone I had the idea of creating an app that lets me remotely control my desktop computer. The reason for that was that lazy me needed to use a clumsy and error-prone full-size wireless keyboard and mouse when I wanted to surf the web from my couch, using the small media PC connected to my TV set. Wouldn't it be nicer to use the much more handy mobile phone as input device? Unfortunately the RTM version of Windows Phone was missing some networking features for that – using web services or http wasn't what I was looking for. The Mango release changed that, because TCP/UDP socket support was added to the platform.

After I started working on the app I quickly realized that it would be really cool to not just have this feature for my own purposes, but to create a generic library which could be integrated into your own applications, both on the phone and desktop side. That was the moment when I decided to create PAARC ("Phone as a Remote Control") – sorry for the boring name, I couldn't come up with something better and more exciting :).


PAARC has the following features:

  • Uses TCP and UDP sockets for maximum performance and responsiveness (watch the demo video to see for yourself), but handles all the networking and threading stuff for you behind the scenes.
  • Requires minimum technical knowledge from your end-users by e.g. using a server discovery mechanism – no cryptic networking terms to handle, "one-click" connect feature.
  • Supports raw (multi-)touch input, the built-in phone gestures like taps, flicks, pinching and dragging, acquisition of all sensor data (accelerometer, compass, gyroscope, combined motion) and text input.
  • Comes with a reference WP7 client with support for tombstoning/deactivation and all supported data types, so you don't have to create a separate app to get started (but you can do that, of course, or integrate the client-side library into your already existing phone app).
  • Allows full configuration and control from the host application (your .NET desktop app).
  • Has built-in remote tracing features to track down problems.
  • Comes with a few demo applications you can learn from and is fully documented.

Possible scenarios for a library like this are for example using phones as controllers for desktop games (in particular using the sensors), creating more natural ways of user interaction for your applications, creating remote control interfaces for existing applications and more. One of the included samples is the PC controlling application I mentioned in the beginning that converts touch, sensor and text input into operating system commands to control the mouse cursor, buttons and to emulate keystrokes – to allow your PC to be completely controlled from the couch, using your phone :).

A first version of the library is now live and available on CodePlex. I took some time in the last days to add a bit of documentation and also to record two videos that demonstrate the library in action and give you a short introduction to its structure and contents.

Phone as a Remote Control on CodePlex :
A 7-minute live demo of the remote controlling sample:
An introduction screencast to the library (38 minutes):

I hope people will like it and cool projects will be built with it in the future. If you have any question, feel free to leave a comment or contact me. Of course bug reports, feature requests and forks/pull requests are welcome on CodePlex too. Enjoy!

Tags: Mango · PAARC · Remote Control · TCP · UDP · Windows Phone 7