Ich werde anfangen, alle Schritte zu erklären, die ich getan habe, und am Ende, was das Problem ist.
- Laden Sie ZXing-2.2 https://code.google.com/p/zxing/downloads/list herunter
- Extrac alles in zxing-2.2.
- Laden Sie Apache Ant http://www.youtube.com/watch?v=XJmndRfb1TU herunter und installieren Sie es
- Navigieren Sie mit der Windows-Befehlszeile (Run-> CMD) zum extrahierten Verzeichnis
- Im Befehlszeilenfenster - Geben Sie 'ant -f core / build.xml' ein, drücken Sie die Eingabetaste und lassen Sie Apache arbeiten, es ist magisch
In diesem Moment ist es so, als würde man die ZXing-Bibliothek direkt in meine Android-Anwendung integrieren
Aber Wooops, "Buildfile: core \ build.xml existiert nicht! Build fehlgeschlagen. Ok. 6. Importieren von ZXing - fehlender core / build.xml
Jetzt ja, ich habe mein core.jar.
- Öffnen Sie Android Studio, Datei -> Projekt importieren -> Wählen Sie / android / in /zxing-2.2/ -> Projekt aus vorhandenen Quellen erstellen -> Projektname: andoid -> Quelldateien für ... alle aktiviert Weiter -> Bibliotheken (nicht) nichts tun) Weiter -> Module (Android aktiviert) Weiter -> SDK 1.7 Weiter -> Fertig stellen
Mit Projekt Öffnen -> Erstellen -> Projekt neu erstellen
100 Fehler 19 Warnungen
Datei -> Projektstruktur -> Bibliotheken -> Hinzufügen -> Java -> Core.jar auswählen, die ich zuvor erstellt habe, und OK -> Bibliothek 'Core' wird zu den ausgewählten Modulen hinzugefügt. (android) OK -> Und OK im Projektstrukturdialog.
Erstellen -> Projekt neu erstellen
15 Fehler 20 Warnungen
Alle Fehler sind Fehler: Konstanter Ausdruck erforderlich und ich sehe Fehler in Switch-Fällen des ZXing-Projekts in Android. Ich ändere alle Schalter für wenn sonst.
0 Fehler 20 Warnungen
Ok, jetzt weiter:
Datei -> Neues Projekt -> zxing_demo Weiter -> Weiter -> Leere Aktivität Weiter -> Fertig stellen
In neuem Projekt -> Datei -> Modul importieren -> Suchen und / android / OK auswählen -> Modul aus vorhandenen Quellen erstellen Weiter -> Weiter -> Weiter -> Weiter -> Fertig stellen
Jetzt kann ich im Explorer / android / / zging_demoProject / und in den externen Bibliotheken sehen
Jetzt ändere ich meinen Code, um QR zu scannen
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>
MainActivity.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
}
}
}
}
Testen Sie nun Ausführen -> Debuggen
Und Absturz.
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.access$600(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
Ich kann in AndroidManifest.xml in dieser Zeile sehen
android:name="com.google.zxing.client.android.CaptureActivity"
"CaptureActivity" in Rot und der Fehler lautet: Symbol 'CaptureActivity' kann nicht aufgelöst werden
Datei -> Projektstruktur -> Module -> zxing_demo -> Abhängigkeiten -> Hinzufügen -> Modulabhängigkeit -> Android OK -> Übernehmen und OK
Jetzt sieht CaptureActivity gut aus
Debuggen Sie erneut
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.access$600(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
Ich denke, ich werde die Anwendung und Absichten verwenden, aber jetzt möchte ich diese Arbeit machen, wenn jemand jetzt was passiert, sag es mir bitte.
quelle
Antworten:
Ich habe ZXING in eine Android-Anwendung integriert und es gab keine guten Quellen für die Eingabe. Ich werde Ihnen einen Hinweis geben, was für mich funktioniert hat - weil es sich als sehr einfach herausstellte .
Es gibt ein wirklich praktisches Git-Repository, das das
zxing
Android-Bibliotheksprojekt als AAR-Archiv bereitstellt .Alles was Sie tun müssen, ist dies zu Ihrem build.gradle hinzuzufügen
und Gradle macht die ganze Magie, um den Code zu kompilieren und macht ihn in Ihrer App zugänglich.
Verwenden Sie diese Klasse / Methode, um den Scanner anschließend zu starten: Aus der Aktivität:
Aus einem Fragment:
Es gibt verschiedene Anpassungsoptionen:
Sie haben ein Beispielprojekt und bieten mehrere Integrationsbeispiele:
Wenn Sie den Link bereits besucht haben, werden Sie sehen, dass ich den Code aus der Git-README-Datei kopiert und eingefügt habe. Wenn nicht, gehen Sie dorthin, um weitere Einblicke und Codebeispiele zu erhalten.
quelle
quelle
Wenn Sie mit denselben Problemen konfrontiert sind, befolgen Sie die einfachen Schritte:
Importieren Sie das Projekt mit der Option
android
aus der heruntergeladenenzxing-master
Zip-DateiImport project (Eclipse ADT, Gradle, etc.)
und fügen Sie die folgenden 2 Codezeilen in Ihrebuild.gradle
Datei auf App-Ebene ein. Dann können Sie loslegen .So einfach, yahh ...
Sie finden immer die neueste Version
core
und dieandroid core
folgenden Links:https://mvnrepository.com/artifact/com.google.zxing/core/3.2.1 https://mvnrepository.com/artifact/com.google.zxing/android-core/3.2.0
UPDATE (29.05.2019)
Fügen Sie stattdessen diese Abhängigkeiten hinzu:
quelle
Ab Version 4.x wird standardmäßig nur Android SDK 24+ unterstützt, und Androidx ist erforderlich.
Fügen Sie Ihrer build.gradle-Datei Folgendes hinzu:
Ältere SDK-Versionen
Für Android SDK-Versionen <24 können Sie zxing: core auf 3.3.0 oder früher herunterstufen, um Android 14+ zu unterstützen:
Sie benötigen dies auch in Ihrem Android-Manifest:
Quelle: https://github.com/journeyapps/zxing-android-embedded
quelle
dieses Tutorial hilft mir android Studio zu integrieren: http://wahidgazzah.olympe.in/integrating-zxing-in-your-android-app-as-standalone-scanner/ wenn unten versucht THIS
einfach zu AndroidManifest.xml hinzufügen
Ich hoffe das hilft!.
quelle