Direto da Califórnia: Lendo Código de Barras com o Magic xpa Mobile

 Image_001

Esta dica foi apresentada no Magic User Conference de 2014 (#MC14HB), em Huntington Beach, CA.

ZBar Bar Code Reader é uma biblioteca gratuita para leitura de códigos de barras que pode ser incorporada em sistemas de várias plataformas, incluindo plataformas móveis.

Embora ela esteja também disponível para o iOS (iPhone / iPad), neste post vamos abordar apenas o seu uso com o Android.

Para Magic xpa 2.4x:

Você pode baixar os objetos e códigos necessários para integração com o Magic xpa neste endereço.

Este pacote possui algumas classes .JAR na pasta BarcodeZBar-libs, e alguns códigos .JAVA na pasta BarcodeZbar-src.

NOTA: Esta biblioteca só funciona em aparelhos que possuam câmera traseira de alta definição, com foco automático. Alguns dispositivos, como alguns modelos do Nexus 7 por exemplo, podem não conseguir interagir com a ZBar Barcode Reader. Isso se trata de uma restrição da biblioteca, e não do Magic xpa.

Para iniciar, devemos copiar as classes da pasta “BarcodeZBar-libs” para a pasta RIAModules\Android\Source\libs:

Image_002

E também copiar os códigos da pasta “BarcodeZbar-src” para a pasta RIAModules\Android\Source\src:

Image_003

DICA: Você pode fazer uma cópia da pasta original “RIAModules\Android” e trabalhar apenas nela, se preferir.

Em seguida, ainda na pasta “RIAModules\Android\Source\src”, devemos editar o arquivo de programa “MainApplication.java” a adicionar a diretiva:

import android.content.Intent;

Image_004

Ainda neste arquivo de programa, no corpo do método “userDefinedFunction” devemos adicionar o trecho de código:

else if ("barcode".equalsIgnoreCase(str)) {
        Intent intent = new Intent(ActiveWindow, BarcodeZBar.class);
        ActiveWindow.startActivity(intent);
        return "";
 }

Image_005

Logo antes do retorno final:

Para finalizar, precisamos ainda ir até a pasta “RIAModules\Android\Source”, no arquivo “AndroidManifest.xml” e adicionar as diretrizes:

<uses-permission android:name="android.permission.CAMERA" />

Image_006

E:

<activity
         android:name="BarcodeZBar"
         android:configChanges="keyboardHidden|orientation" >
 </activity>
 <activity
         android:name="ZBarScannerActivity"
         android:screenOrientation="landscape" >
 </activity>

Image_007

Agora, basta compilar o novo Mobile Client Android do Magic xpa, e teremos um client já preparado para ler códigos de barra:

Image_008

Observe que o tamanho dele será maior que o normal, justamente porque existem mais classes (ZBar Bar Code Reader) contidas nele. Isso é normal.

Você pode rever os passos de compilação dos Mobile Clients Android do Magic xpa nestes endereços:

Tendo o Mobile Client Android do Magic xpa já preparado para interagir com a biblioteca ZBar Bar Code Reader, o último passo é acionar a leitura dos códigos de barras através de um projeto Magic xpa RIA.

O acionamento de APIs específicas/customizadas das plataformas móveis já foi explicado neste outro post.

Para solicitar a leitura de um código de barras, devemos executar o código Magic xpa:

ClientOSEnvGet('device_udf|barcode')

Image_009

O argumento “barcode(após o “|”) vai ser interceptado no método “userDefinedFunction” exatamente no “else if” que adicionamos (ver acima). Neste ponto a biblioteca ZBar Bar Code Reader é acionada e abre a câmera traseira do dispositivo para realizar a leitura.

IMPORTANTE: A leitura do código de barras é assíncrona. A função ClientOSEnvGet retorna imediatamente e não aguarda o código ser lido.

Quando a câmera conseguir focar na imagem, e a biblioteca conseguir interpretar as barras, é gerado um External Event para a aplicação Magic xpa.

Por isso, precisamos também ter um Handler para o evento External Event, com um argumento do tipo string (alpha). Quando acionado, o parâmetro conterá o valor do código lido:

Image_010

Agora, basta ter um código de barras impresso e acionar o código Mobile Client Android do Magic xpa:

 

Image_011

 

Image_012

 

Image_013

 

Manoel Frederico da Silva
Gerente de Produto e Magic Evangelista – Magic Brasil

 

2 comentários

  1. Bonjour,
    Merci pour ses informations
    Serait-il possible d’intégrer dans le code source une police de caractere (Barbara…) code barre.

    Je souhaiterais afficher un code barre à l’ecran de mon mobile.
    Merci de votre collaboration
    Cordialement
    Jean philippe MARTIN

    1. Olá Jean,

      para mostrar o código de barras na tela, o mais fácil seria você gerar a imagem destas barras como um .PNG, e mostrar esta imagem.

Deixe um comentário

O seu endereço de e-mail não será publicado.