La soluzione "arduinosa" per fare questa cosa c'è: è arduino ADK
Oppure si ottiene lo stesso risultato con un arduino uno + host usb
Io ne ho uno, ho fatto diverse prove, ma non sono riuscito a farlo andare, ho notato un supporto da parte di android un po' ridotto, e poi dipende anche da modello e versione del tuo smartphone..