Intégrer ZXing dans Android Studio

je vais commencer à expliquer toutes les étapes que j'ai faites et à la fin Quel est le problème.

  1. Download ZXing-2.2 https://code.google.com/p/zxing/downloads/list
  2. Extrac tous dans zxing-2.2.
  3. télécharger et installer Apache Ant http://www.youtube.com/watch?v=XJmndRfb1TU
  4. avec L'utilisation de Windows Commandline (Run->CMD) vers le répertoire extrait
  5. Dans l'invite de commande de Type 'ant -f de base/construire.xml " appuyez sur entrée et de laisser Apache travail c'est de la magie

à ce moment est comme intégration de la bibliothèque ZXing directement dans mon application Android

But Wooops, " Buildfile: corebuild.xml n'existe pas! Construire échoué. OK. 6. Importation de ZXing - manque de base/construire.xml

Maintenant, oui, j'ai mon cœur.pot.

  1. Ouvrir Android Studio, Fichier -> Importer un Projet -> Sélectionner /android/ en /zxing-2.2/ -> Créer un projet à partir de sources existantes -> nom du Projet: android -> fichiers Source pour... tous les cochée -> Bibliothèques (ne rien faire) Suivant -> Modules (android vérifié) Suivant -> SDK 1.7 Suivant> Terminer

Avec le Projet Open -> Build -> projet de Reconstruction de

100 erreur 19 Avertissements

fichier -> Structure du projet -> bibliothèques -> ajouter -> Java -> sélectionner core.jar que je crée avant et OK - > Library 'core' seront ajoutés aux modules sélectionnés. (android) OK -> et OK dans la boîte de dialogue Structure du projet.

Construire - > Reconstruire Le Projet

15 erreurs 20 Avertissements

toutes les erreurs sont des erreurs: expression constante requise et Je vois erreur dans les cas de changement de ZXing projet sur android Je change tous les commutateurs pour si elses.

0 erreurs 20 Avertissements

OK, maintenant continue:

Fichier - > Nouveau projet - > zxing_demo Suivant -> Suivant -> activité Vierge Suivant - > Terminer

Dans un nouveau projet -> Fichier -> Importer le module -> Rechercher et sélectionner /android/ OK -> Créer un module à partir de sources existantes Suivant -> Suivant -> Suivant -> Suivant> Terminer

maintenant je peux voir dans le explorer /android/ /zging_demoProject/ et des Bibliothèques Externes

maintenant je change mon code tu scan QR

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.zxing_demo"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="7"
    android:targetSdkVersion="16" />
<uses-permission android:name="android.permission.CAMERA"/>
<uses-feature android:name="android.hardware.camera" />
<uses-feature
    android:name="android.hardware.camera.autofocus"
    android:required="false" />
<uses-feature
    android:name="android.hardware.touchscreen"
    android:required="false" />
<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="com.example.zxing_demo.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:clearTaskOnLaunch="true"
        android:stateNotNeeded="true"
        android:configChanges="orientation|keyboardHidden"
        android:name="com.google.zxing.client.android.CaptureActivity"
        android:screenOrientation="landscape"
        android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
        android:windowSoftInputMode="stateAlwaysHidden" >
        <intent-filter >
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
        <intent-filter >
            <action android:name="com.google.zxing.client.android.SCAN" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>
</application>

activité principale.java

package com.example.zxing_demo;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    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
        }
    }
}

}

maintenant test, Run - > Debug

et CRASH.

Logcat

08-31 02:58:28.085  20665-20665/com.example.zxing_demo E/AndroidRuntime: FATAL EXCEPTION: main
    java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.zxing_demo/com.google.zxing.client.android.CaptureActivity}: java.lang.ClassNotFoundException: com.google.zxing.client.android.CaptureActivity
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1891)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1992)
    at android.app.ActivityThread.access0(ActivityThread.java:127)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1158)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:137)
    at android.app.ActivityThread.main(ActivityThread.java:4448)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:511)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:823)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:590)
    at dalvik.system.NativeStart.main(Native Method)
    Caused by: java.lang.ClassNotFoundException: com.google.zxing.client.android.CaptureActivity
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
    at android.app.Instrumentation.newActivity(Instrumentation.java:1023)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1882)
    ... 11 more

je peux voir dans AndroidManifest.xml dans cette ligne

android:name="com.google.zxing.client.android.CaptureActivity"

"CaptureActivity" en rouge et l'erreur de dire: Impossible de résoudre le symbole "CaptureActivity'

Fichier -> Structure de Projet -> Modules -> zxing_demo -> Dépendances -> Ajouter -> Module de dépendance -> android OK -> Appliquer et OK

CaptureActivity Now looks good

"151950920 de Débogage" nouveau

08-31 03:06:58.513  21740-21740/com.example.zxing_demo E/AndroidRuntime: FATAL EXCEPTION: main
    java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.zxing_demo/com.google.zxing.client.android.CaptureActivity}: java.lang.ClassNotFoundException: com.google.zxing.client.android.CaptureActivity
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1891)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1992)
    at android.app.ActivityThread.access0(ActivityThread.java:127)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1158)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:137)
    at android.app.ActivityThread.main(ActivityThread.java:4448)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:511)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:823)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:590)
    at dalvik.system.NativeStart.main(Native Method)
    Caused by: java.lang.ClassNotFoundException: com.google.zxing.client.android.CaptureActivity
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
    at android.app.Instrumentation.newActivity(Instrumentation.java:1023)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1882)
    ... 11 more

je pense que je vais utiliser l'application et les intentions, mais maintenant, je veux faire ce travail, si quelqu'un maintenant ce qui est arriver de me dire s'il vous plaît.

77
demandé sur Vadim Kotov 2013-08-31 05:42:54

4 réponses

j'intégrais ZXING dans une application Android et il n'y avait pas de bonnes sources pour l'entrée partout, je vais vous donner un indice sur ce qui a fonctionné pour moi - parce qu'il s'est avéré être très facile .

il existe un dépôt git très pratique qui fournit le projet de bibliothèque android zxing comme une archive AAR.

Tout ce que vous avez à faire est d'ajouter à votre construction.Grad

repositories {
    jcenter()
}

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

et Gradle fait toute la magie de compiler le code et le rend accessible dans votre application.

pour démarrer le Scanner après, utilisez cette classe / méthode: De l'activité:

new IntentIntegrator(this).initiateScan(); // `this` is the current Activity

D'un Fragment:

IntentIntegrator.forFragment(this).initiateScan(); // `this` is the current Fragment
// If you're using the support library, use IntentIntegrator.forSupportFragment(this) instead.

il existe plusieurs options de personnalisation:

IntentIntegrator integrator = new IntentIntegrator(this);
integrator.setDesiredBarcodeFormats(IntentIntegrator.ONE_D_CODE_TYPES);
integrator.setPrompt("Scan a barcode");
integrator.setCameraId(0);  // Use a specific camera of the device
integrator.setBeepEnabled(false);
integrator.setBarcodeImageEnabled(true);
integrator.initiateScan();

Ils ont un exemple de projet , et fournissent plusieurs exemples d'intégration:

si vous avez déjà visité le lien vous allez voir que je viens de copier&collé le code de la Git README. Si ce n'est pas le cas, allez-y pour obtenir plus de renseignements et des exemples de code.

200
répondu Langusten Gustel 2018-05-04 04:11:47
buttion.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                new com.google.zxing.integration.android.IntentIntegrator(Fragment.this).initiateScan();
            }
        });

    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
        if(result != null) {
            if(result.getContents() == null) {
                Log.d("MainActivity", "Cancelled scan");
                Toast.makeText(this, "Cancelled", Toast.LENGTH_LONG).show();
            } else {
                Log.d("MainActivity", "Scanned");
                Toast.makeText(this, "Scanned: " + result.getContents(), Toast.LENGTH_LONG).show();
            }
        } else {
            // This is important, otherwise the result will not be passed to the fragment
            super.onActivityResult(requestCode, resultCode, data);
        }
    }



dependencies {
    compile 'com.journeyapps:zxing-android-embedded:3.2.0@aar'
    compile 'com.google.zxing:core:3.2.1'
    compile 'com.android.support:appcompat-v7:23.1.0'
}
4
répondu hardip 2016-05-04 06:11:57

tous ceux qui sont confrontés aux mêmes problèmes, suivez les étapes simples:

Importer le projet android de téléchargé zxing-master fichier zip en utilisant l'option Import project (Eclipse ADT, Gradle, etc.) et ajouter la dollowing 2 lignes de codes dans votre application niveau build.gradle fichier et et vous êtes prêt à exécuter.

si simple, yahh...

dependencies {
        // https://mvnrepository.com/artifact/com.google.zxing/core
        compile group: 'com.google.zxing', name: 'core', version: '3.2.1'
        // https://mvnrepository.com/artifact/com.google.zxing/android-core
        compile group: 'com.google.zxing', name: 'android-core', version: '3.2.0'

    }

vous pouvez toujours trouver la dernière version core et android core à partir des liens ci-dessous:

https://mvnrepository.com/artifact/com.google.zxing/core/3.2.1 https://mvnrepository.com/artifact/com.google.zxing/android-core/3.2.0

mise à jour (21.09.2018)

ajouter ces dépendances à la place:

dependencies {
    implementation 'com.google.zxing:core:3.3.3'
    implementation 'com.google.zxing:android-core:3.3.0'
}
4
répondu Smeet 2018-09-21 10:23:44

ce tutoriel m'aide à intégrer à android studio: http://wahidgazzah.olympe.in/integrating-zxing-in-your-android-app-as-standalone-scanner / si down essayer CE

ajoute juste Androïdmanifest.xml

<activity
         android:name="com.google.zxing.client.android.CaptureActivity"
         android:configChanges="orientation|keyboardHidden"
         android:screenOrientation="landscape"
         android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
         android:windowSoftInputMode="stateAlwaysHidden" >
         <intent-filter>
             <action android:name="com.google.zxing.client.android.SCAN" />
             <category android:name="android.intent.category.DEFAULT" />
         </intent-filter>
     </activity>

Espérons que cette aide!.

-1
répondu hirigoshy 2013-11-12 19:40:44