web-dev-qa-db-fra.com

Comment intégrer la bibliothèque ZXing à Android Studio for Barcode Scanning?

J'ai cherché partout sur Internet comment inclure la bibliothèque zxing dans mon projet et j'ai trouvé ce tutoriel: http://blog.dihaw.com/integrating-zxing-in-your-Android-app-as -standalone-scanner /

Mais lorsque j'arrive au point où vous devez vérifier que BeepManager ajoute l'importation R, je rencontre toutes sortes d'erreurs dans mon projet (même sur MainActivity): il n'a pas pu trouver R.

Aussi, j'ai trouvé celui-ci https://github.com/journeyapps/zxing-Android-embedded/blob/master/README.md qui semblait beaucoup plus facile car il était intégré automatiquement par niveau, mais quand Je synchronise il apparaît une erreur qu'il n'a pas pu trouver les fichiers.

Toute aide serait appréciée :) Je suis nouveau sur Android Studio.

MODIFIER:

J'ai ajouté les paramètres de la 2ème méthode (celle avec les paramètres Gradle) à mon build.gradle et une erreur 4 apparait:

Error:Failed to find: com.embarkmobile:zxing-Android-legacy:2.0.0 
Error:Failed to find: com.google.zxing:core:3.0.1 
Error:Failed to find: com.embarkmobile:zxing-Android-integration:2.0.0 
Error:Failed to find: com.embarkmobile:zxing-Android-minimal:2.0.0

De l'aide?

---RÉPONDRE---

Pour résoudre ce problème, je devais désactiver Offline Work on Gradle. Allez dans Android Paramètres de Studio> Télécharger> Décochez la case "Travail hors connexion". Ensuite, vous êtes prêt à partir!

26
Mauricio Silva

Vous devez ajouter ce qui suit à votre build.gradle fichier:

repositories {
    mavenCentral()

    maven {
        url "http://dl.bintray.com/journeyapps/maven"
    }
}

dependencies {
    // Supports Android 4.0.3 and later (API level 15)
    compile 'com.journeyapps:zxing-Android-embedded:2.0.1@aar'

    // Supports Android 2.1 and later (API level 7), but not optimal for later Android versions.
    // If you only plan on supporting Android 4.0.3 and up, you don't need to include this.
    compile 'com.journeyapps:zxing-Android-legacy:2.0.1@aar'

    // Convenience library to launch the scanning and encoding Activities.
    // It automatically picks the best scanning library from the above two, depending on the
    // Android version and what is available.
    compile 'com.journeyapps:zxing-Android-integration:2.0.1@aar'

    // Version 3.0.x of zxing core contains some code that is not compatible on Android 2.2 and earlier.
    // This mostly affects encoding, but you should test if you plan to support these versions.
    // Older versions e.g. 2.2 may also work if you need support for older Android versions.
    compile 'com.google.zxing:core:3.0.1'
}

Ma build.gradle fichier comme ceci:

apply plugin: 'com.Android.application'

Android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"

    defaultConfig {
        applicationId "com.myapplication2"
        minSdkVersion 16
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
        }
    }
}

repositories {
    mavenCentral()

    maven {
        url "https://raw.github.com/embarkmobile/zxing-Android-minimal/mvn-repo/maven-repository/"
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.Android.support:appcompat-v7:21.0.3'
    // Supports Android 4.0.3 and later (API level 15)
    compile 'com.embarkmobile:zxing-Android-minimal:2.0.0@aar'

    // Supports Android 2.1 and later (API level 7), but not optimal for later Android versions.
    // If you only plan on supporting Android 4.0.3 and up, you don't need to include this.
    compile 'com.embarkmobile:zxing-Android-legacy:2.0.0@aar'

    // Convenience library to launch the scanning and encoding Activities.
    // It automatically picks the best scanning library from the above two, depending on the
    // Android version and what is available.
    compile 'com.embarkmobile:zxing-Android-integration:2.0.0@aar'

    // Version 3.0.x of zxing core contains some code that is not compatible on Android 2.2 and earlier.
    // This mostly affects encoding, but you should test if you plan to support these versions.
    // Older versions e.g. 2.2 may also work if you need support for older Android versions.
    compile 'com.google.zxing:core:3.0.1'
}

Le code est ici .

Aussi, pour savoir comment l’utiliser, veuillez vous référer à ma réponse sur le Stackoverflow ici

Il contient une méthode et aussi un code simple que j'ai testé.

38
bjiang

À partir de la version 3 de zxing-Android-embedded, il vous suffit de les ajouter à votre build.gradle fichier:

repositories {
    jcenter()
}

dependencies {
    compile 'com.journeyapps:zxing-Android-embedded:3.0.2@aar'
    compile 'com.google.zxing:core:3.2.0'
}

Suivez les étapes dans: https://github.com/journeyapps/zxing-Android-embedded/

Il permet maintenant également le mode portrait avec de simples modifications à la IntentIntegrator et des moyens plus simples de personnaliser les vues.

16
Itay Bianco

Le moyen le plus simple d'intégrer ZXing pour la numérisation de codes à barres ou de Qr.

Pour une référence complète: Scan Barcode ZXing Android

Ajouter des dépendances

compile 'me.dm7.barcodescanner:zxing:1.9' 

ScanActivity

import Android.support.v7.app.AppCompatActivity;
import Android.os.Bundle;
import Android.util.Log;
import com.google.zxing.Result;

import me.dm7.barcodescanner.zxing.ZXingScannerView;

public class ScanActivity extends AppCompatActivity implements ZXingScannerView.ResultHandler{

    private ZXingScannerView mScannerView;

    @Override
    public void onCreate(Bundle state) {
        super.onCreate(state);
        mScannerView = new ZXingScannerView(this);   // Programmatically initialize the scanner view
        setContentView(mScannerView);                // Set the scanner view as the content view
    }

    @Override
    public void onResume() {
        super.onResume();
        mScannerView.setResultHandler(this); // Register ourselves as a handler for scan results.
        mScannerView.startCamera();          // Start camera on resume
    }

    @Override
    public void onPause() {
        super.onPause();
        mScannerView.stopCamera();           // Stop camera on pause
    }

    @Override
    public void handleResult(Result rawResult) {
        // Do something with the result here
       // Log.v("tag", rawResult.getText()); // Prints scan results
       // Log.v("tag", rawResult.getBarcodeFormat().toString()); // Prints the scan format (qrcode, pdf417 etc.)

        MainActivity.tvresult.setText(rawResult.getText());
        onBackPressed();

        // If you would like to resume scanning, call this method below:
        //mScannerView.resumeCameraPreview(this);
    }
}
3
user6435056

Je l'ai avec ça:

repositories { mavenCentral()
    maven { url "https://raw.github.com/embarkmobile/zxing-Android-minimal/mvn-repo/maven-repository/" }
}

compile 'com.google.zxing:core:3.2.1'
compile 'com.embarkmobile:zxing-Android-minimal:2.0.0@aar'
compile 'com.embarkmobile:zxing-Android-integration:2.0.0@aar'

Je recommande d'utiliser IntentIntegrator

IntentIntegrator integrator = new IntentIntegrator(getActivity()); 
integrator.forSupportFragment(this).initiateScan();

Le requestCode revient avec IntentIntegrator.REQUEST_CODE

1
formica