Je cherchais comment ajouter un scanner de codes à barres à mon application. Y at-il des exemples ou comment puis-je le faire facilement?
Le projet ZXing fournit une application autonome de lecteur de codes à barres qui - via le mécanisme d'intention d'Android - peut être appelée par d'autres applications souhaitant intégrer la numérisation de codes à barres.
Pour ce faire, le plus simple consiste à appeler le ZXing SCAN
Intent
à partir de votre application, comme ceci :
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
}
}
}
Appuyer sur le bouton associé à mScan
lancera directement l'écran du scanner de codes à barres ZXing (ou bloquera si ZXing n'est pas installé). Une fois qu'un code à barres a été reconnu, vous obtenez le résultat dans votre variable Activity
, ici dans la variable contents
.
Pour éviter les pannes et simplifier les choses pour vous, ZXing a fourni une classe d’utilitaire que vous pourriez intégrer à votre application pour rendre l’installation de ZXing plus fluide, en redirigeant l’utilisateur vers Android Market s'ils ne l'ont pas déjà installé.
Enfin, si vous souhaitez intégrer la numérisation de codes à barres directement dans votre application sans avoir à installer l’application distincte ZXing, c’est un projet open source et vous pouvez le faire! :)
Edit: Quelqu'un a modifié ce guide dans cette réponse (cela semble un peu étrange, je ne peux pas en garantir l'exactitude, et je ne suis pas sûr pourquoi ils utilisent Eclipse en 2015):
Pas à pas pour configurer zxing 3.2.1 dans Eclipse
J'ai eu un problème avec l'implémentation du code jusqu'à ce que je trouve un site Web (je ne le trouve plus pour le moment) qui explique que vous devez inclure le nom du paquet dans le nom de l'intention.putExtra.
Il ouvrirait l'application, mais il 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");
Cela a très bien fonctionné. Juste un conseil pour tout autre programmeur novice Android.
L'utilisation de l'IntentInegrator fourni est préférable. Il vous permet d’inviter votre utilisateur à installer le lecteur de codes à barres s’il ne l’a pas. Il vous permet également de personnaliser les messages. La constante IntentIntegrator.REQUEST_CODE contient la valeur du code de requête du onActivityResult à vérifier dans le bloc 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
L'utilisation de Zxing de cette manière nécessite qu'un utilisateur installe également l'application de scanner de codes à barres, ce qui n'est pas idéal. Ce que vous voulez probablement, c'est intégrer Zxing directement dans votre application.
Je recommande fortement d'utiliser cette bibliothèque: https://github.com/dm77/barcodescanner
Cela prend tous les problèmes de construction délirants que vous allez rencontrer 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.
Si vous souhaitez inclure dans votre code et ne pas utiliser IntentIntegrator recommandé par la bibliothèque ZXing, vous pouvez utiliser certains de ces ports:
J'utilise le premier, et ça marche parfaitement! Il a un exemple de projet pour l'essayer.
La détection de code à barres est maintenant disponible dans services Google Play . Code lab du processus d'installation, voici le api docs , et un exemple de projet .
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 à construire Android application sans IntentIntegrator.