J'ai recherché comment ajouter un lecteur de codes-barres à mon application. Est-ce que quelqu'un connaît des exemples ou sait comment le faire facilement?Utilisation de ZXing pour créer une application de numérisation de codes à barres Android
Répondre
Le projet ZXing fournit une application de lecture de code-barres autonome qui peut être appelée par le biais du mécanisme d'intention Android — par d'autres applications qui souhaitent intégrer l'analyse de codes à barres.
La meilleure façon de faire est plus facile d'appeler le ZXing SCAN
Intent
de votre application, like this:
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
}
}
}
En appuyant sur le bouton lié à mScan
lancerait directement dans l'écran du scanner de codes à barres ZXing (ou accident si ZXing n'est pas installé). Une fois qu'un code à barres a été reconnu, vous recevrez le résultat dans votre Activity
, ici dans la variable contents
. Pour éviter le crash et simplifier les choses pour vous, ZXing a provided a utility class que vous pouvez intégrer dans votre application pour faciliter l'installation de ZXing, en redirigeant l'utilisateur vers l'Android Market s'il ne l'a pas déjà installé. Enfin, si vous souhaitez intégrer la lecture de codes à barres directement dans votre application sans avoir à installer l'application ZXing séparée, eh bien, c'est un projet open source et vous pouvez le faire! :)
Edit: Quelqu'un édité ce guide dans cette réponse (ça sonne un peu bizarre, je ne peux pas se porter garant quant à leur exactitude, et je ne sais pas pourquoi ils utilisent Eclipse 2015):
étape par étape pour la configuration ZXing 3.2.1 dans Eclipse
- Télécharger zxing-master.zip de "https://github.com/zxing/zxing"
- U nzip zxing-master.zip, utiliser Eclipse pour importer le dossier "android" projet ZXing-maître
- Télécharger core-3.2.1.jar de "http://repo1.maven.org/maven2/com/google/zxing/core/3.2.1/"
- Créer "libs" dans le projet "Android" et coller cor -3.2.1.jar dans le dossier libs
- Cliquez sur le projet: choisissez "properties" -> "Java Compiler" pour changer le niveau à 1.7. Puis cliquez sur "Android" changer "Project build target" pour Android 4.4.2+, car l'utilisation de 1.7 nécessite la compilation avec Android 4.4
- Si "CameraConfigurationUtils.java" n'existe pas dans "zxing-master/android/app/src/main/java/com/google/zxing/client/android/camera/". Vous pouvez le copier depuis "zxing-master/android-core/src/main/java/com/google/zxing/client/android/camera /" et le coller dans votre projet.
- Nettoyez et construisez le projet. Si votre projet affiche une erreur à propos de "switch-case", vous devez les remplacer par "if - else".
- Terminé. Nettoyer et construire le projet. Vous pouvez cliquer sur "Proprties"> "Android"> cliquez sur "Is Libraries" à utiliser pour votre projet.
Merci les gars! Je suis un dev développeur android et je voulais juste commencer à comprendre ce qu'il faudrait pour faire fonctionner un scanner de code à barres. Je dois encore trouver comment ajouter com.google.zxing à mon projet. Est-ce aussi simple que d'utiliser com.google.zxing dans mon code ou dois-je télécharger la source et l'importer dans mon fichier manifeste? – wajiw
(Je suis le projet BTW - nous pouvons continuer à http://groups.google.com/group/zxing/) Christopher a raison. En utilisant un tel code, vous n'avez pas besoin d'importer du code de projet. Vous appelez l'application Barcode Scanner via Intent; aucun code de lecture de codes à barres dans votre application. –
La façon vraiment sympa de le faire implique un peu plus de code, ce qui fera en sorte que l'utilisateur est invité à installer Barcode Scanner si nécessaire. C'est l'autre lien auquel il a fait référence.Copiez le cours sur http://code.google.com/p/zxing/source/browse/trunk/android-integration/src/com/google/zxing/integration/android/IntentIntegrator.java et utilisez-le. Encore aucun autre code nécessaire. Si vous voulez, vous pouvez aller jusqu'au bout et intégrer le code de numérisation, mais sans une raison difficile de le faire, c'est plus difficile pour vous. –
L'utilisation de IntentInegrator fourni est meilleure. Il vous permet d'inviter votre utilisateur à installer le lecteur de code-barres s'il ne l'a pas. Cela vous permet également de personnaliser les messages. L'IntentIntegrator.La constante REQUEST_CODE contient la valeur du code de requête pour le paramètre onActivityResult à vérifier dans le bloc if ci-dessus.
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
J'ai eu un problème avec implimenting le code jusqu'à ce que je trouve un certain site Web (je ne peux pas le trouver à nouveau en ce moment) qui expliquaient que vous devez inclure le nom du package au nom de l'intention.putExtra.
Il remonterait l'application mais ne reconnaîtrait aucun code-barres, et quand je l'ai changé.
intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
à
intent.putExtra("com.google.zxing.client.android.SCAN.SCAN_MODE", "QR_CODE_MODE");
Il fonctionnait très bien. Juste un conseil pour tout autre programmeur novice andorid.
Je ne pouvais pas obtenir ce travail jusqu'à ce que j'ai suivi cette réponse - il semble donc qu'il est essentiel de le faire. Merci pour le conseil! – casper
Si vous souhaitez inclure dans votre code et ne pas utiliser la IntentIntegrator que la bibliothèque ZXing Recomend vous pouvez utiliser certains de ces ports
http://code.google.com/p/android-zxinglib/
http://code.google.com/p/android-quick-response-code/
J'utilise la première et fonctionne parfaitement ! Il a un exemple de projet pour l'essayer
Le premier ne prend en charge la numérisation. La seconde est un bon exemple d'encodage d'un code QR, travaillé pour moi. –
Vous pouvez utiliser ce guide de démarrage rapide http://shyyko.wordpress.com/2013/07/30/zxing-with-android-quick-start/ avec un exemple de projet simple pour créer une application Android sans IntentIntegrator.
J'ai essayé votre exemple de projet et je ne peux pas le faire pour scanner un QRCode, dans logcat j'obtiens 'com.google.zxing.NotFoundException' et' Decode Fail' ... à 'DecodeAsyncTask' (Classe interne de 'PreviewCallback'), le résultat reçu par' onPostExecute' est toujours nul, même si le QRCode est à l'intérieur du rectangle de cadrage ... aussi je ne vois ni le "laser", ni les points candidats jaunes qui apparaissent à l'original application zxing (pas sûr si vous avez implémenté ça ...) –
l'ai trouvé! c'est seulement la numérisation en mode paysage ... aucune idée comment résoudre ce problème? –
Il n'y a pas de "laser", ni les points candidats jaunes, parce que c'est juste un exemple de la façon dont ZXing peut être intégré si vous voulez utiliser une disposition et des fonctionnalités différentes de l'approche Intent. Si l'utilisation de la disposition d'intention est acceptable pour vous, vous feriez mieux de suivre l'approche proposée par Christopher Orr. –
L'utilisation de Zxing de cette manière nécessite qu'un utilisateur installe également l'application du lecteur de codes-barres, ce qui n'est pas idéal. Ce que vous voulez probablement est de regrouper Zxing directement dans votre application.
Je recommande fortement d'utiliser cette bibliothèque: https://github.com/dm77/barcodescanner
Il prend tous les problèmes de construction fous que vous allez courir en essayant d'intégrer directement Xzing ou Zbar. Il utilise ces bibliothèques sous les couvertures, mais les enveloppe dans une API très simple à utiliser.
La détection de code à barres est maintenant disponible en Google Play services. Code lab du processus d'installation, voici le api docs, et un sample project.
C'est plus facile que d'utiliser Zxing. –
Cochez [ma réponse détaillée] (http://stackoverflow.com/a/30572168/165071) avec des captures d'écran et un exemple d'application Android. –
ZXing n'est pas le seul moyen de lire un code à barres. En 2016, il est beaucoup plus facile d'utiliser le [Android Barcode API] (http://stackoverflow.com/questions/6327483/implement-bar-code-scanner-in-android/38881708#38881708). –