Can android applications communicate with USB device directly? I've been thinking that, since many android phones support USB OTG maybe there could be a way to engineer a device that performs special task and uses phone as it's control panel.

But before making this serious idea, I need to know if it can work.


How does android handle unknown USB devices? 
Can application use USB directly without ROOT privegies?
As an alternative, does android support virtual COM port?
As the last hope, can applications directly read/set value on headset output? (To use it as digital IO pin)
I never tried it but applications can access USB through the following API since android 3.1.
To confirm this there are devices with infrared that you plug to USB in your phone to use it as universal remote control.