Remote control of Android device - mimic physical keystrokes to any installed app?

The goal:

Remote control of an Android device. I'm trying to make an alternate input device for physically disabled individuals who can't use a touchscreen or the tiny slide-out keyboard on an Android phone or tablet. I need to be able to control the entire Android device - send keystrokes like KEYCODE_DPAD_DOWN, etc. A joystick or other input device would be used, and ideally the command would be sent to the device via Bluetooth.

Here's where I am now:

I can send these keystrokes through Monkeyrunner to control an active device (Thanks for the help, Roman R.!). Problem is, that requires a computer to be connected to the device and configured to program it. I'd like to eliminate the computer from the system altogether, and allow an individual to have complete (remote) control over their Android device. Perhaps through an app or service that would run in the background, handle the Bluetooth exchange and produce the corresponding Key Events.

My research thus far:

It is possible to send KeyEvents, but this only seems to allow interaction with your own app - entering text into an EditText box, for example. (link)

It is also possible (as far as I understand) to trap a physical key event on the device and perform some action in response to that event.

Finally, it looks like Google knows exactly what I'm trying to do but has disallowed it for security reasons. (link - at the bottom of the page someone links to this blog, where it is stated that this is not allowed.)

I understand there could be security concerns for implementing something like this, but the whole goal of this project is to give the user complete (remote) control over the Android system. Obviously it would be necessary to explicitly require the user to authorize this control. This sort of control is already available, they call it Device Administration. This allows an app to control very intimate parts of the system, and correctly requires explicit authorization to do so. This remote control system would be no different.

In my case it would be used to assist my sister, who is physically disabled. You might use it to create a flight control system or some other gamepad-like controller. There are a lot of reasons to implement this sort of interface.

Finally, Google is constantly updating Android, and the blog entry above that states this cannot be done is over two years old. A lot has changed since then...

Does anyone have any idea how to do this? If it can't be done yet, do you know how to make an official request for a new feature to be added to the Android system that might allow it in a later release?


Device administration can also be done remotely, as u said it has access to system level, unfortunately it provides access to only few system level features like wiping device, locking and other password setting from applications. But remote control, no I don't think device administration helps.

I would think to use a USB accessory which controls the device. Have a look at this

http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en553673

The below link (software support)is highly helpful for getting started

http://ww1.microchip.com/downloads/en/DeviceDoc/Android%20Library%20Help.pdf

they also have a accessory development kit.