Soy nuevo en la plataforma Android y me gustaría saber si es posible que un dispositivo Android (aplicación) se comunique con el sistema Linux/XP a través del puerto USB para una comunicación bidireccional. Si es así, ¿cómo se puede hacer?
Lo que quiero lograr: tengo una PC con Linux y quiero escribir una pequeña aplicación en mi dispositivo Android para enviar y recibir datos desde la PC a través de USB.
Esto no es posible en la mayoría de los dispositivos, ya que no admiten el modo USB Host. Algunos dispositivos tienen compatibilidad con USB OTG o un puerto USB Host, pero estos son dispositivos relativamente raros hasta ahora. En teoría, podría escribir una aplicación en Win/Linux para acceder al teléfono a través de USB, pero no al revés.
Los dispositivos Android como hosts USB han sido un punto de interés para todos los desarrolladores. Hasta el sistema operativo HoneyComb de Android (OS 3.0), no ha habido señales de posibilidad.
Sin embargo, la última API de HoneyComb (OS 3.1) parece brindar posibilidades para admitir dispositivos Android que se utilizan como hosts USB. Se ha incluido una API para el mismo.
Por lo tanto, aunque a partir de ahora muy pocos dispositivos Android admiten la capacidad de USB Host, será posible en todos los próximos dispositivos.
Android no expone directamente el modo de dispositivo USB a las aplicaciones, pero las aplicaciones pueden transferir datos indirectamente a través de IP cuando se usa la conexión. Esto a veces requiere un software/controlador adicional personalizado 'similar a un proxy' en el host para desenvolver los datos. Por ejemplo, para interpretar ipMIDI como MIDI en Linux, se necesita multimidicast/QmidiNet.
Sin embargo, el modo host ha estado expuesto desde 3.1 (en android.hardware.usb).
Con suerte, Google eventualmente admitirá el modo de dispositivo (suspiro). Vea estos problemas en el proyecto Android (¡y márquelos si le interesan!):
https://code.google.com/p/android/issues/detail?id=10176
https://code.google.com/p/ android/problemas/detalle?id=30198
eldarerathis