Usando o Zxing para criar um aplicativo de digitalização de código de barras do Android [duplicado

StackOverflow https://stackoverflow.com/questions/2050263

Pergunta

Esta pergunta já tem uma resposta aqui:

Eu tenho procurado como adicionar um scanner de código de barras ao meu aplicativo. Existem exemplos ou como posso fazer isso facilmente?

Foi útil?

Solução

O projeto ZXing fornece um aplicativo de leitor de código de barras independente que - via mecanismo de intenção do Android - pode ser chamado por outros aplicativos que desejam integrar a digitalização de código de barras.

A maneira mais fácil de fazer isso é chamar o zxing SCAN Intent do seu aplicativo, assim:

public Button.OnClickListener mScan = new Button.OnClickListener() {
    public void onClick(View v) {
        Intent intent = new Intent("com.google.zxing.client.android.SCAN");
        intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
        startActivityForResult(intent, 0);
    }
};

public void onActivityResult(int requestCode, int resultCode, Intent intent) {
    if (requestCode == 0) {
        if (resultCode == RESULT_OK) {
            String contents = intent.getStringExtra("SCAN_RESULT");
            String format = intent.getStringExtra("SCAN_RESULT_FORMAT");
            // Handle successful scan
        } else if (resultCode == RESULT_CANCELED) {
            // Handle cancel
        }
    }
}

Pressionando o botão vinculado a mScan lançaria diretamente na tela do scanner de código de barras Zxing (ou falha se o Zxing não estiver instalado). Depois que um código de barras for reconhecido, você receberá o resultado em seu Activity, aqui no contents variável.

Para evitar o travamento e simplificar as coisas para você, o zxing tem forneceu uma aula de utilidade que você pode integrar ao seu aplicativo para tornar a instalação do ZXing mais suave, redirecionando o usuário para o mercado do Android, se eles ainda não o possuem.

Por fim, se você deseja integrar a digitalização de código de barras diretamente no seu aplicativo sem depender de ter o aplicativo ZXing separado instalado, bem, então é um projeto de código aberto e você pode fazê -lo! :)


Editar: Alguém editou este guia nesta resposta (parece um pouco estranho, não posso garantir sua precisão, e não sei por que eles estão usando o Eclipse em 2015):

Passo a passo para configurar o zxing 3.2.1 no eclipse

  1. Baixe o zxing-master.zip de "https://github.com/zxing/zxing"
  2. Unzip zxing-master.zip, use o Eclipse para importar o projeto "Android" em Zxing-Master
  3. Baixe Core-3.2.1.jar de "http://repo1.maven.org/maven2/com/google/zxing/core/3.2.1/"
  4. Crie a pasta "Libs" no projeto "Android" e cola cor-3.2.1.jar na pasta Libs
  5. Clique no Projeto: Escolha "Propriedades" -> "Java Compiler" para alterar o nível para 1.7. Em seguida, clique em "Android" Change "Project Target" para Android 4.4.2+, porque o uso de 1.7 requer compilação com o Android 4.4
  6. Se "Cameraconfigurationutils.java" não existir em "Zxing-mestre/android/app/src/main/java/com/google/zxing/client/android/câmera/". Você pode copiá-lo de "Zxing-Master/Android-Core/SRC/Main/Java/com/google/zxing/client/android/camera/" e colar no seu projeto.
  7. Projeto limpo e construir. Se o seu projeto mostrar erro sobre "Switch - case", você deve alterá -los para "se - else".
  8. Concluído. Projeto limpo e construir. Você pode clicar em "proprietários"> "Android"> clicar em "IS Libraries" para usar para o seu projeto.

Outras dicas

Tive um problema em implementar o código até encontrar algum site (não consigo encontrá -lo novamente agora) que expliquei que você precisa incluir o nome do pacote em nome da intenção.putextra.

Ele puxaria o aplicativo, mas não reconheceria nenhum código de barras e quando eu o mudei.

intent.putExtra("SCAN_MODE", "QR_CODE_MODE");

para

intent.putExtra("com.google.zxing.client.android.SCAN.SCAN_MODE", "QR_CODE_MODE");

Funcionou muito bem. Apenas uma dica para outros programadores de Android iniciantes.

Usar o intentino -gratador fornecido é melhor. Ele permite que você solicite que seu usuário instale o scanner de código de barras, se ele não o tiver. Ele também permite que você personalize as mensagens. A constante IntentIntegrator.Request_Code mantém o valor do código de solicitação para o OnactivityResult para verificar no bloco acima.

IntentIntegrator intentIntegrator = new IntentIntegrator(this); // where this is activity 
intentIntegrator.initiateScan(IntentIntegrator.ALL_CODE_TYPES); // or QR_CODE_TYPES if you need to scan QR

IntentIntegrator.java

O uso do Zxing dessa maneira exige que um usuário também instale o aplicativo Scanner de código de barras, que não é o ideal. O que você provavelmente deseja é agrupar o ZXing diretamente no seu aplicativo.

Eu recomendo usar esta biblioteca: https://github.com/dm77/barcodescanner

São necessários todos os problemas loucos de construção que você encontrará tentando integrar o XZing ou o Zbar diretamente. Ele usa essas bibliotecas sob as cobertas, mas as envolve em uma API muito simples de usar.

Se você deseja incluir seu código e não usar o IntentIntegrator que a Biblioteca Zxing recomenda, você pode usar algumas dessas portas:

Eu uso o primeiro e funciona perfeitamente! Ele tem um projeto de amostra para experimentá -lo.

A detecção de código de barras está agora disponível em Serviços do Google Play. Código Lab do processo de configuração, aqui estão o API Docs, e a Projeto de amostra.

Você pode usar este guia de início rápido http://shyyko.wordpress.com/2013/07/30/zxing-with-android-quick-start/ Com um exemplo simples de projeto para criar um aplicativo Android sem o IntentIntegrator.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top