Question

    

Cette question a déjà une réponse ici:

         

J'ai cherché comment ajouter un scanner de codes à barres à mon application. Y a-t-il des exemples ou comment puis-je faire facilement?

Était-ce utile?

La solution

Le projet ZXing fournit une application de lecteur de code à barres autonome qui - via le mécanisme intention d'Android -. Peut être appelé par d'autres applications qui souhaitent intégrer la numérisation de codes à barres

La meilleure façon de le faire est d'appeler le ZXing SCAN Intent de votre application, comme celui-ci :

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 plantage et de simplifier les choses pour vous, ZXing ont https://github.com/zxing/zxing"

  • Décompressez zxing-master.zip, utiliser Eclipse pour importer le projet "Android" dans 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 un dossier "libs" dans le projet "Android" et collez-cor 3.2.1.jar dans le dossier libs
  • Cliquez sur le projet: choisissez « Propriétés » -> « compilateur Java » pour changer le niveau de 1,7. Cliquez ensuite sur « Android » changement « cible de construction du projet » android 4.4.2+, parce que l'utilisation 1.7 nécessite la compilation avec Android 4.4
  • Si "CameraConfigurationUtils.java" n'existent pas dans "ZXing-maître / android / app / src / main / java / com / google / ZXing / client / android / appareil photo /". Vous pouvez le copier à partir de "ZXing-maître / android-core / src / main / java / com / google / ZXing / client / android / appareil photo /" coller à votre projet.
  • Nettoyer et construire des projets. Si votre erreur show projet de « switch - cas », vous devez les changer pour « si - autre ».
  • Terminé. projet de nettoyage et de construction. Vous pouvez cliquer sur « proprties »> « Android »> cliquez sur « Est-bibliothèques » à utiliser pour votre projet.
  • Autres conseils

    J'ai eu un problème avec la mise en œuvre du 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 du intent.putExtra.

    Il se retirerait la demande, mais il ne reconnaîtrait pas les codes à barres, et quand je l'ai changé à partir.

    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 petit conseil pour toutes les autres programmeurs Android novices.

    En utilisant la condition IntentInegrator est mieux. Il vous permet de incitez votre utilisateur d'installer le scanner de codes à barres si elles ne l'ont pas. Il vous permet également de personnaliser les messages. La constante IntentIntegrator.REQUEST_CODE contient la valeur du code de demande de onActivityResult pour vérifier si dans ce qui précède bloc.

    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

    En utilisant ZXing cette façon nécessite un utilisateur d'installer également l'application du scanner de codes à barres, ce qui est idéal. Ce que vous voulez sans doute est de regrouper ZXing dans votre application directement.

    Je recommande fortement d'utiliser cette bibliothèque: https://github.com/dm77/barcodescanner

    Il faut que tous les problèmes de construction fous que vous allez courir en essayant d'intégrer directement Xzing ou Zbar. Il utilise les bibliothèques sous les couvertures, mais les enveloppe dans un très simple à utiliser l'API.

    Si vous souhaitez inclure dans votre code et ne pas utiliser la IntentIntegrator que la bibliothèque ZXing recommande, vous pouvez utiliser certains de ces ports:

    J'utilise le premier, et il fonctionne parfaitement! Il a un exemple de projet pour l'essayer.

    La détection de codes à barres est maintenant disponible dans Google Play services . code laboratoire du processus d'installation, voici la docs api, et 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 le projet d'exemple simple pour construire l'application Android sans IntentIntegrator.

    Licencié sous: CC-BY-SA avec attribution
    Non affilié à StackOverflow
    scroll top