Visión general de Get Smart PeripheralsLib
PeripheralsLib es una biblioteca de Android diseñada para facilitar la interacción entre las aplicaciones de Android y el hardware del Terminal de Punto de Venta (TPV). Proporciona una interfaz unificada para controlar periféricos específicos en dispositivos TPV-Android, como impresoras térmicas, lectores de banda magnética y lectores de código de barras profesionales.
Esta guía presenta los conceptos básicos, la arquitectura y las capacidades de PeripheralsLib para ayudarte a comprender cómo se integra en tus soluciones de pago o retail.
Propósito y alcance
El objetivo principal de PeripheralsLib es abstraer las complejidades de la comunicación de hardware de bajo nivel. En lugar de escribir comandos en bruto para los controladores del dispositivo, interactúas con objetos y métodos Java de alto nivel.
Esta biblioteca está diseñada específicamente para:
- Impresión: Envío de imágenes bitmap a la impresora térmica del dispositivo.
- Captura de datos: Lectura de tarjetas sanitarias (banda magnética) y escaneo de códigos de barras utilizando lectores de hardware profesionales.
- Gestión de dispositivos: Configuración de modos quiosco, como el bloqueo de las barras de navegación o la configuración de launchers predeterminados.
Arquitectura principal
PeripheralsLib funciona con un patrón Manager-Callback. Esto garantiza que tu aplicación siga respondiendo mientras las operaciones de hardware, que pueden llevar tiempo, se ejecutan de forma asíncrona.
El PeripheralsManager
La clase PeripheralsManager es el punto de entrada central para todas las operaciones de la biblioteca. Actúa como un puente tipo singleton entre el contexto de tu aplicación y el hardware del dispositivo.
- Inicialización: Se instancia el manager una vez, pasando el Context de la aplicación. Esto establece automáticamente la conexión con el hardware del terminal subyacente.
- Alcance: Todas las peticiones de hardware (impresión, escaneo, configuración) se enrutan a través de esta única instancia.
Callbacks asíncronos
La mayoría de las operaciones de hardware en PeripheralsLib son asíncronas. Cuando solicitas una acción, como imprimir un recibo o esperar a que se escanee un código de barras, debes proporcionar una implementación de Callback.
La biblioteca utiliza interfaces de callback específicas para diferentes operaciones:
PrintBmpCallback: Gestiona los estados de éxito o error para los trabajos de impresión.MagReadCallback: Devuelve los datos de la banda magnética (Pista 1 y Pista 2) o errores.BarcodeCallback: Devuelve los datos del código de barras escaneado o errores.ConfigCallback: Confirma el éxito o el fracaso de los cambios en la configuración del sistema.
Este patrón asegura que el hilo de la interfaz de usuario (UI) no se bloquee mientras el dispositivo inicializa la impresora o espera a que un usuario deslice una tarjeta.
Características principales
1. Impresión térmica
La biblioteca soporta la impresión de imágenes en formato Bitmap. Para asegurar un resultado consistente en los diferentes modelos de terminales, la biblioteca se basa en estándares de imagen específicos (por ejemplo, anchura máxima de 390px, esquema de color en blanco y negro, compresión JPEG).
2. Lectura de tarjeta sanitaria
PeripheralsLib incluye una lógica especializada para Tarjetas sanitarias. A diferencia de los lectores de banda magnética genéricos, la función magStripeRead analiza pistas específicas (Pista 1 y Pista 2) para identificar si la tarjeta deslizada es una tarjeta sanitaria válida.
3. Lectura profesional de código de barras
Para los dispositivos equipados con un lector láser profesional dedicado (basado en hardware), la biblioteca proporciona una interfaz directa para activar el lector y recuperar datos.
Esta característica está dirigida a dispositivos con lectores profesionales integrados. No controla la cámara estándar del dispositivo.
4. Configuración de quiosco del terminal
Para entornos empresariales dedicados, PeripheralsLib te permite bloquear la interfaz de Android de forma programática. Esto incluye:
- Barra de estado y barra de navegación: Ocultar o deshabilitar las barras del sistema para evitar que los usuarios salgan de la aplicación o cambien la configuración.
- Configuración del Launcher: Establecer un paquete de aplicación y una Activity específicos como la pantalla de inicio predeterminada (Launcher).
Requisitos del sistema
PeripheralsLib es compatible con proyectos de Android Studio.
Soporte para Android 12
A partir de la versión 1.0.6, la biblioteca incluye soporte específico para Android 12 y superior. Debido a los cambios de seguridad en las versiones más recientes de Android, se deben declarar permisos específicos (android.permission.QUERY_ALL_PACKAGES) en el manifest de tu aplicación para permitir que la biblioteca interactúe correctamente con los servicios del sistema.