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.
- Download ZXing-2.2 https://code.google.com/p/zxing/downloads/list
- Extrac tous dans zxing-2.2.
- télécharger et installer Apache Ant http://www.youtube.com/watch?v=XJmndRfb1TU
- avec L'utilisation de Windows Commandline (Run->CMD) vers le répertoire extrait
- 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.
- 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" nouveau08-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.
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:
- Toutesorientationcaptureactivité
- ContinuousCaptureActivity
- CustomScannerActivity
- ToolbarCaptureActivity
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.
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'
}
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'
}
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!.