react-native-urovo-scanner
Version:
React Native package for Urovo Scanner SDK integration - Official SDK implementation
228 lines (227 loc) • 6.24 kB
JavaScript
/**
* Interfaz TypeScript para el módulo nativo UrovoScannerModule
* Usando la API oficial de Urovo ScanManager
*/
import { NativeModules, NativeEventEmitter, } from 'react-native';
// Constantes de la API oficial de Urovo
export const SCAN_MODES = {
SCAN_MODE_BROADCAST: 0,
SCAN_MODE_STORAGE: 1,
SCAN_MODE_WEDGE: 2,
};
export const TRIGGER_MODES = {
SCAN_TRIGGER_MODE_ONESHOT: 0,
SCAN_TRIGGER_MODE_CONTINUOUS: 1,
SCAN_TRIGGER_MODE_PULSE: 2,
};
// Obtener el módulo nativo
const UrovoScannerModule = NativeModules.UrovoScannerModule;
// Crear el event emitter
const eventEmitter = new NativeEventEmitter(NativeModules.UrovoScannerModule);
// Clase principal del scanner
export class UrovoScanner {
constructor() {
this.scanResultSubscription = null;
this.scanErrorSubscription = null;
}
/**
* Abrir el scanner
*/
async openScanner() {
try {
return await UrovoScannerModule.openScanner();
}
catch (error) {
console.error('Error abriendo scanner:', error);
return false;
}
}
/**
* Cerrar el scanner
*/
async closeScanner() {
try {
return await UrovoScannerModule.closeScanner();
}
catch (error) {
console.error('Error cerrando scanner:', error);
return false;
}
}
/**
* Verificar si el scanner está abierto
*/
async isScannerOpened() {
try {
return await UrovoScannerModule.isScannerOpened();
}
catch (error) {
console.error('Error verificando estado del scanner:', error);
return false;
}
}
/**
* Iniciar escaneo
*/
async startScan() {
try {
return await UrovoScannerModule.startScan();
}
catch (error) {
console.error('Error iniciando escaneo:', error);
return false;
}
}
/**
* Detener escaneo
*/
async stopScan() {
try {
return await UrovoScannerModule.stopScan();
}
catch (error) {
console.error('Error deteniendo escaneo:', error);
return false;
}
}
/**
* Obtener información del scanner
*/
async getScannerInfo() {
try {
return await UrovoScannerModule.getScannerInfo();
}
catch (error) {
console.error('Error obteniendo información del scanner:', error);
return null;
}
}
/**
* Configurar modo de salida
*/
async setOutputMode(mode) {
try {
return await UrovoScannerModule.setOutputMode(mode);
}
catch (error) {
console.error('Error configurando modo de salida:', error);
return false;
}
}
/**
* Configurar modo de trigger
*/
async setTriggerMode(mode) {
try {
return await UrovoScannerModule.setTriggerMode(mode);
}
catch (error) {
console.error('Error configurando modo de trigger:', error);
return false;
}
}
// ========== MÉTODOS DE CONFIGURACIÓN ==========
/**
* Obtener configuración de parámetros enteros
*/
async getConfiguration() {
try {
return await UrovoScannerModule.getParameterInts();
}
catch (error) {
console.error('Error obteniendo configuración:', error);
return null;
}
}
/**
* Configurar parámetro entero
*/
async setConfiguration(propertyId, value) {
try {
return await UrovoScannerModule.setParameterInts(propertyId, value);
}
catch (error) {
console.error('Error configurando parámetro:', error);
return false;
}
}
/**
* Configurar parámetro string
*/
async setConfigurationString(propertyId, value) {
try {
return await UrovoScannerModule.setParameterString(propertyId, value);
}
catch (error) {
console.error('Error configurando parámetro string:', error);
return false;
}
}
/**
* Obtener configuración de parámetros string
*/
async getStringConfiguration() {
try {
return await UrovoScannerModule.getParameterString();
}
catch (error) {
console.error('Error obteniendo configuración string:', error);
return null;
}
}
/**
* Configurar parámetro string
*/
async setStringConfiguration(propertyId, value) {
try {
return await UrovoScannerModule.setParameterString(propertyId, value);
}
catch (error) {
console.error('Error configurando parámetro string:', error);
return false;
}
}
/**
* Obtener constantes PropertyID
*/
async getPropertyConstants() {
try {
return await UrovoScannerModule.getPropertyConstants();
}
catch (error) {
console.error('Error obteniendo constantes:', error);
return null;
}
}
/**
* Suscribirse a eventos de escaneo
*/
onScanResult(callback) {
this.scanResultSubscription = eventEmitter.addListener('onScanResult', callback);
return this.scanResultSubscription;
}
/**
* Suscribirse a eventos de error
*/
onScanError(callback) {
this.scanErrorSubscription = eventEmitter.addListener('onScanError', callback);
return this.scanErrorSubscription;
}
/**
* Remover todas las suscripciones
*/
removeAllListeners() {
if (this.scanResultSubscription) {
this.scanResultSubscription.remove();
this.scanResultSubscription = null;
}
if (this.scanErrorSubscription) {
this.scanErrorSubscription.remove();
this.scanErrorSubscription = null;
}
}
}
// Exportar instancia singleton
export const urovoScanner = new UrovoScanner();
// Exportar también como default
export default urovoScanner;