# Escaneamento de Códigos de Barras

Este guia explica como acionar o leitor de hardware profissional (laser/imager) em terminais compatíveis para ler códigos de barras.

<Callout type="note">

Esta funcionalidade é específica para dispositivos com hardware de leitura profissional integrado. Ela não utiliza a câmera padrão do dispositivo.

</Callout>

## Iniciando um Escaneamento

Para iniciar o processo de escaneamento, chame o método `barcodeRead`. Isso ativa o leitor de hardware e aguarda a detecção de um 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);
    }
});
```

## Tratamento de Erros

O callback `onError` fornece um código inteiro indicando o motivo da falha no escaneamento.

| Código de Erro | Significado | Descrição |
| :---- | :---- | :---- |
| **1** | Timeout | O tempo limite do leitor se esgotou antes que um código de barras fosse lido. |
| **2** | Não Suportado | O dispositivo não suporta a leitura profissional de código de barras. |
| **3** | Cancelado | O usuário cancelou o escaneamento (por exemplo, por meio de um botão físico de escaneamento). |
| **99** | Indeterminado | Ocorreu um erro desconhecido. |

### Exemplo de Tratamento de Erros

```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;
    }
}
```