Usar la cámara USB en la aplicación de Android

Necesito mostrar un video transmitido por una cámara USB conectada a mi tableta en Android 3.2. Pero no tengo idea de cómo hacerlo.

No puedo usar la cámara de la tableta, porque mi tableta está fijada a bordo.

Gracias.

La discusión solo es cierta si el sensor dentro de la cámara USB cumple con los estándares UVC (la mayoría de las cámaras actuales son compatibles).

De manera predeterminada, no hay una API de Android disponible para la cámara externa. Por lo tanto, si se toma en serio el proyecto, el trabajo que realice implicará escribir un firmware que se comunique con los controladores del kernel y luego mostrar los datos en la capa de aplicación de Android.

Cuando inserta una cámara USB, hay pocas cosas que debe verificar primero.

1) ¿Su cámara está recibiendo energía del puerto USB? (Para que esto suceda, su puerto USB debe tener soporte USB-OTG; el puerto USB puede actuar como destino y como host. Compruebe si las luces en la cámara (si las hay) están iluminadas o no).

2) ¿Se está creando nodo en el directorio / dev? (Solo en caso de que el núcleo tenga v4l2 y soporte UVC habilitado, se creará el nodo). Si se está creando un nodo, ahora tiene acceso al hardware real que es la cámara USB y su trabajo será fácil a partir de ahora. para comprobar hacer ls -l / dev / v * dentro del sistema de archivos de Android y verificar si se está creando video0 o video1.

4) Si se crea un nodo, debe escribir un firmware (UVC) y adquirir un marco del hardware real. Es (UVC) compatible con diferentes llamadas ioctl que hablan con la capa v4l2 en el kernel y le traerá los fotogtwigs.

Estos marcos serían en su mayoría de formato formato YUYV422 o YUYV420.

Una vez que reciba los marcos, conviértelos en RGB o Jpeg (Android tiene soporte para convertir) y visualícelos en el canvas o en la imagen que desee.

Para grabar, puede que tenga que usar ffmpeg para codificar. Esto convertirá las imágenes en video.

PD: escribí esto en 2012 cuando no había soporte para cámara USB. Ya no estoy trabajando en Android … así que no puedo explicar cómo hacerlo con la API de la última versión de Android. Consulte la respuesta y los comentarios de @jumpjack a continuación. Además, si conoce alguna solución mejor, publíquela aquí.

Una cosa que vale la pena verificar antes de comenzar es si su cable USB funciona con un mouse, teclado y unidad USB (necesitará la aplicación StickMount en algunos dispositivos para que la unidad USB funcione).

También estoy buscando una cámara web USB que funcione en Android y estoy tratando de reproducir lo que se hizo en http://brain.cc.kogakuin.ac.jp/research/usb-e.html . Por último, escuché que las webcams de Bluetooth funcionan de la caja.

Ahora (2017) hay aplicaciones de Android que admiten la entrada de video USB:

https://play.google.com/store/apps/details?id=labsp.android.viewer&hl=it

Probablemente se requiere un cable OTG “en forma de Y” (los cables OTG “en forma de Y” permiten alimentar el dispositivo externo)