Usando o Zxing para criar um aplicativo de digitalização de código de barras do Android [duplicado
-
20-09-2019 - |
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?
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
- Baixe o zxing-master.zip de "https://github.com/zxing/zxing"
- Unzip zxing-master.zip, use o Eclipse para importar o projeto "Android" em Zxing-Master
- Baixe Core-3.2.1.jar de "http://repo1.maven.org/maven2/com/google/zxing/core/3.2.1/"
- Crie a pasta "Libs" no projeto "Android" e cola cor-3.2.1.jar na pasta Libs
- 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
- 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.
- Projeto limpo e construir. Se o seu projeto mostrar erro sobre "Switch - case", você deve alterá -los para "se - else".
- 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
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.