Durante años, imprimir desde Android usando WinDev Mobile fue casi un mito.
Entre sockets que no conectaban, permisos que faltaban y ejemplos que no terminaban de funcionar, muchos desarrolladores asumieron que simplemente no se podía.

En este nuevo episodio de HolaWindev Labs, demostramos lo contrario:
sí imprime en Android, sin SDK externos, sin librerías adicionales y con un resultado real sobre una impresora Bluetooth térmica.


🚀 El proyecto: ImpresionMobile

El ejemplo mostrado en el video se llama ImpresionMobile, una app creada para demostrar el flujo completo de impresión térmica desde un dispositivo Android.

La ventana principal permite seleccionar el nivel de corrección del código QR, definir el tamaño del módulo y lanzar la impresión directamente.
Detrás de esa interfaz simple, el procedimiento printCFE() se encarga de todo el proceso:

  1. Construir un objeto con los datos del comprobante (CFE).
  2. Crear el ticket mediante un Builder especializado que genera el formato ESC/POS.
  3. Conectarse a la impresora por Bluetooth usando SocketConnectBluetooth().
  4. Enviar el buffer resultante y ejecutar el corte del papel.

Todo sucede en segundos, directamente desde el dispositivo.


🧱 Estructura del código

El proyecto está organizado en clases para mantener el código claro y modular:

  • BaseCFETicketBuilder: clase base abstracta con toda la lógica de formato ESC/POS.
  • ETicketBuilder: implementación concreta para el tipo de comprobante 101 (eTicket).
  • CFE, Emisor, Receptor, Totales y Detalles: clases modelo que encapsulan los datos del comprobante.
  • Factory: función global que devuelve el builder correspondiente según el tipo de CFE.

El resultado es una arquitectura reutilizable, escalable y completamente compatible con impresoras térmicas de 50 mm y 80 mm.


⚙️ Permisos necesarios en Android

Uno de los puntos más importantes es la configuración de permisos.
Android bloquea por defecto las operaciones Bluetooth y de almacenamiento, así que es imprescindible declarar:

  • BLUETOOTH
  • BLUETOOTH_ADMIN
  • BLUETOOTH_CONNECT
  • ACCESS_FINE_LOCATION
  • WRITE_EXTERNAL_STORAGE

Sin estos permisos, la app no podrá descubrir ni conectarse a la impresora.


🧾 La impresión final

Cuando se ejecuta printCFE(), el sistema genera el ticket completo en memoria, lo envía por socket Bluetooth y la impresora comienza a trabajar.
El ticket incluye encabezado, datos del receptor, totales, adenda, CAE y código QR, todo en formato nativo ESC/POS.

El flujo es directo, rápido y 100 % reproducible.
El ejemplo del video utiliza una impresora térmica Bluetooth de 50 mm, pero con solo cambiar el ancho configurado se puede imprimir también en modelos de 80 mm.


💡 Reflexión HolaWindev

El valor de este laboratorio no está solo en que funcione, sino en la forma en que está construido:
con buenas prácticas, clases separadas y un enfoque limpio.

El objetivo de HolaWindev Labs es precisamente ese: mostrar que WinDev y WinDev Mobile pueden afrontar desafíos reales —como la impresión desde Android— con código estructurado y resultados confiables.

Si algo demuestra este proyecto es que no hay magia, hay método.
Y cuando entendemos bien la arquitectura y el entorno, las cosas simplemente… imprimen.


📣 Juan Barbat – HolaWindev
🎥 Tutoriales y análisis en español sobre WinDev, WebDev y HFSQL
🌐 holawindev.com | barbat.dev
✉️ juan@barbat.dev
💬 Discord: https://discord.gg/9xDAJ6ugQr