# Escaneo de códigos de barras

Esta guía explica cómo activar el lector de hardware profesional (láser/imager) en terminales compatibles para leer códigos de barras.

<Callout type="note">

Esta funcionalidad es específica para dispositivos con hardware de lectura profesional integrado. No utiliza la cámara estándar del dispositivo.

</Callout>

## Iniciar un escaneo

Para iniciar el proceso de escaneo, llama al método `barcodeRead`. Esto activa el lector de hardware y espera a que se detecte un código de barras.

```java
manager.barcodeRead(new BarcodeCallback() {
    @Override
    public void onSuccess(BarcodeResponse barcodeResponse) {
        // Handle successful scan
        String codeData = barcodeResponse.getData(); // Hypothetical getter based on typical response objects
        Log.d("Scanner", "Barcode detected: " + codeData);
    }

    @Override
    public void onError(int errorCode) {
        // Handle scanning errors
        handleScanError(errorCode);
    }
});
```

## Gestión de errores

El callback `onError` proporciona un código entero que indica por qué falló el escaneo.

| Código de error | Significado | Descripción |
| :---- | :---- | :---- |
| **1** | Timeout | Se agotó el tiempo de espera del lector antes de leer un código de barras. |
| **2** | No soportado | El dispositivo no soporta la lectura profesional de códigos de barras. |
| **3** | Cancelado | El usuario canceló el escaneo (por ejemplo, a través de un botón físico de escaneo). |
| **99** | Indeterminado | Se ha producido un error desconocido. |

### Ejemplo de gestión de errores

```java
private void handleScanError(int errorCode) {
    switch (errorCode) {
        case 1:
            showToast("Scan timed out. Please try again.");
            break;
        case 2:
            showToast("Scanner hardware not available on this device.");
            break;
        case 3:
            showToast("Scan cancelled by user.");
            break;
        default:
            showToast("Unknown scanner error: " + errorCode);
            break;
    }
}
```