Is this feasible: Converting gamepad input into touch input on Android

I have a number of Android games that would be perfect to play with gamepad. But these games use touch screen for input and do not support gamepad natively.

So my original project goal was to write an Android app for myself, that listen for gamepad input and convert them into touch events. I can make something useful while gaining hands-on programming experience in Android.

But then I found out it's not possible. Due to security, Android will not allow one app to send touch events to another, not without root.

Here's my question on Stackoverflow. Octopus (linked in my SO question) is a dead-end as it is incompatible with Google Play.

The other app, Touch4Gamepad, lead me to here.

From the description, Touch4Gamepad requires you to:

  • Start its app as a service
  • Create mapping of gamepad input to screen co-ordinates
  • Connect a USB hub to Android phone via OTG
  • Connect Arduino board to USB hub
  • Permit USB connection on Android phone
  • Connect gamepad to USB hub
  • Permit USB connection on Android phone

Since the app is a premium app and I have no idea if it works for me or not, I have yet to purchase it.

I have no idea how Touch4Gamepad does it, but I am guessing that the Touch4Gamepad service is taking gamepad input events and converting them to touch actions, then have the Arduino board act as a HID (mouse) and send it back to the Android phone.

I would still like to create my own solution and learn new techniques while doing it. So I would like to ask if what I described in the paragraph above is feasible?

And what if I take it one-step further, can I remove the USB hub and connect gamepad to Arduino board, which in turn connects to Android phone via OTG?

I found ADK which is designed to work with Android... but I am a complete noob when it comes to hardware, I couldn't even figure out if ADK allows me to connect a USB device to it.

(Edit: I found another board called USB Host Shield but it is retired. Is there a new product replacing it?)

If what I described above is possible, is ADK the right board for me?