Wie integriert man den Zxing Barcode Scanner, ohne die eigentliche Zxing App zu installieren (Symbol kann nicht aufgelöst werden: .android.CaptureActivity)?
Ich integrieren möchten zxing scanner in meine app ohne Bedarf an externen Anwendung (zxing-scanner aus dem play store). Das ist mein code
Button scan = (Button) findViewById(R.id.scan_button);
scan.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent("com.google.zxing.client.android.SCAN");
intent.setPackage("com.mypackage.app");
intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
startActivityForResult(intent, SCANNER_REQUEST_CODE);
}
});
@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == SCANNER_REQUEST_CODE) {
//Handle scan intent
if (resultCode == Activity.RESULT_OK) {
//Handle successful scan
String contents = intent.getStringExtra("SCAN_RESULT");
String formatName = intent.getStringExtra("SCAN_RESULT_FORMAT");
byte[] rawBytes = intent.getByteArrayExtra("SCAN_RESULT_BYTES");
int intentOrientation = intent.getIntExtra("SCAN_RESULT_ORIENTATION", Integer.MIN_VALUE);
Integer orientation = (intentOrientation == Integer.MIN_VALUE) ? null : intentOrientation;
String errorCorrectionLevel = intent.getStringExtra("SCAN_RESULT_ERROR_CORRECTION_LEVEL");
} else if (resultCode == Activity.RESULT_CANCELED) {
//Handle cancel
}
} else {
//Handle other intents
}
}
AndroidManifest.xml
<activity android:name="com.google.zxing.client.android.CaptureActivity"
android:screenOrientation="landscape"
android:configChanges="orientation|keyboardHidden"
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>
Mein Android Studio gesagt, dass sich nicht beheben symbol: .android.CaptureActivity
und wenn ich diesen Befehl ausgeführt, Fehler ist
java.lang.ClassNotFoundException: finde nicht die Klasse "com.google.zxing.client.android.CaptureActivity"
Was ist passiert?
InformationsquelleAutor der Frage stackex | 2015-03-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zwar schon beantwortet worden, ich fühle mich wie eine umfassende Lösung für diejenigen, die wollen, verwenden ZXing Bibliothek ohne automatische installation Methode wie ANT.
ZXing ein open-source-Projekt ermöglichen (wie beschrieben in den ZXing-website), die Sie zur Nutzung seiner Funktionen als Projekte Bibliothek anstatt zwingen, 3rd-party-Anwendung-installation auf dem Benutzer-Gerät, meiner Meinung nach ist dies die bevorzugte Wahl für die meisten Projekte.
Ist es wichtig zu beachten, dass diese Möglichkeit akzeptabel ist von den Machern und verstoßen nicht gegen Ihre Nutzungsbedingungen, denn wir wollen nicht kopieren Sie Ihren code, sondern benutzt es einfach als eine Bibliothek für unser Projekt.
Der Allgemeine Ablauf ist dieser:
Hier ist eine voll detaillierte Verfahren für die Verwendung von Eclipse (die kann sehr leicht umgesetzt werden, für Studio-als auch):
Herunterladen der ZXing-source-code und die core-Datei
Import der ZXing-Projekt in Eclipse
Sollten Sie jetzt sehen, erfassen Sie Aktivitäten in Ihrem Arbeitsbereich. Je nach
der ZXing-version, die Sie haben, müssen Sie möglicherweise zuweisen core.jar Datei
der ZXing-Projekt, um zu überprüfen, ob dies der Fall ist für Ihre version
öffnen Sie den Ordner libs der captureActivity Projekt, und überprüfen Sie, ob
core.jar die Datei existiert, wenn nicht, als Sie ihn selbst hinzufügen,
andernfalls überspringen Sie das nächste Kapitel.
5.1. Hinzufügen core.jar Datei rechts klicken Sie auf die captureActivity Projekt in den Eclipse-workspace und wählen Sie " Build path>konfigurieren
build path
5.2. Menü Seite wählen Sie "Java Build Path, und klicken Sie auf die Registerkarte "Bibliotheken".
5.3.Klicken Sie auf "Add external JARs" und navigieren Sie zu dem Sie ursprünglich exportiert ZXing zip.
5.4. Geben Sie den core-Ordner und wählen Sie core.jar (name kann sich unterscheiden, basierend auf der ZXing-version) und klicken Sie auf öffnen
5.5. Sie sollten jetzt sehen core.jar in deinem build path-Liste, klicken Sie auf die "Order and Export" - Registerkarte, und überprüfen Sie core.jar
Definition von ZXing Bibliothek und die Festsetzung der code
Nun abhängig von der version von ZXing, die Sie haben, sehen Sie vielleicht Eclipse markieren Sie einige der java-Dateien mit Fehlern, wenn dies der Fall ist, haben Sie zu beheben, den code entsprechend android-java-version, sonst einfach verschieben zum nächsten Kapitel
8.1. Öffnen Sie jeden fehlerhaften java-Datei im editor, und ersetzen Sie defekte Switch-Anweisungen mit einer Kette von If-Else-Anweisungen, das ist ein nerviges Teil, den ich kenne.
Hinzufügen ZXing als eine Bibliothek mit Ihren eigenen Projekt
Hinzufügen von ZXing Methoden für Ihre Anwendung erforderlichen
Dieser Teil ist nicht wirklich ein guide, sondern einfach das, was ich nützlich für meine eigenen Bedürfnisse so weit, die beiden Methoden, die ich verwende meist sind diese:
Läuft der scanner und der Aufnahme eines QR-code:
Abrufen der Ergebnisse aus dem scan in onActivityResult ():
Beachten Sie, dass, genau wie jede andere Aktivität, die im android-capture-Aktivität müssen ebenfalls definiert werden, in das Projekt manifestieren, beachten Sie auch, dass Sie haben, um dem Projekt die Berechtigung zum verwenden der Kamera etwa so :
Ich hoffe, das wird anderen helfen, sparen Sie ein paar gute Stunden der Forschung.
Als zusätzlichen bonus, ich empfehle die Lektüre von :
https://biocram.wordpress.com/2013/06/11/integrate-zxing-as-a-library-inside-an-android-project/
InformationsquelleAutor der Antwort Liran Cohen
Als alle die Antworten, die ich bisher gefunden sind, basiert auf Eclipse und sind ziemlich veraltet, wie ich jetzt hinzufüge, meine Antwort hinzufügen ZXing als standalone-Bibliothek auf Android-Studio (2.1.2).
Habe ich das kompilierte Projekt auf Github https://github.com/tarun0/ZXing-Standalone-library fügen Sie Einfach die
zxing_standalone
- Modul in Ihrem Projekt, und Sie werden gut zu gehen. Für details oder zu kompilieren, ist es für die neueren Versionen, Lesen Sie weiter.Mag es scheinen, lange Prozedur, aber sobald Sie durch Sie gehen, finden Sie es Recht einfach und kurz.
android
Verzeichnis aus. Also, wenn Sie zufällig auf diese Ordner bereits, Sie brauchen nicht zu downloaden der ganze Zweig ist über 126MB groß.core-x.x.x.jar
aus http://repo1.maven.org/maven2/com/google/zxing/core/3.2.1/Project
von derProject Explorer
(siehe Bild)New
>Module
>Import Gradle Project
. Nun, wählen Sie dieandroid
Verzeichnis der heruntergeladenen source-code (in Schritt 1). (Referenz-Bild unten, für den absoluten Neuling). Ändern Sie Optional den Namen und lassen Sie die Standardeinstellungen für den import.libs
und legte diecore.jar
- Datei in Schritt 2 heruntergeladen haben, in diesen Ordner. Dann öffnenProject Structure
aus dem Menü Datei und fügen Sie diesecore.jar
- Datei als Abhängigkeit.Download CameraConfigurationalUtils.java und fügen Sie ihn in das Projekt.
Nun machen Sie ein paar änderungen in der importierten Projekts gradle-Datei.
Ändern Sie die
apply plugin: 'com.android.application'
zuapply plugin: 'com.android.library'
dem system mitzuteilen, dass es eine Bibliothek. Und entfernen Sie dieapplicationId ...
- Anweisung.In der importierten Projekts
Manifest.xml
Datei, machen Sie folgende änderungen.In der
<application...
tag, entfernen Sie dieandroid:icon...
undandroid:logo...
und entfernen Sie diese<category android:name="android.intent.category.LAUNCHER"/>
von der intent-filter wie dieser ist eine Bibliothek, die jetzt und soll nicht auf die Trägerrakete (wenn Sie nicht entfernen Sie diese, werden Sie am Ende mit zwei launcher Aktivitäten).In Ihr Projekt
build.gradle
- Datei, in derdependencies
block, fügen Sie diese Zeilecompile project (':android')
Hier, ersetzen Sie dieandroid
mit dem gewählten Namen beim importieren das Projekt in Schritt 4. Synchronisieren und reinigen Sie das Projekt. Sie werden sehen, dass einige Fehler inswitch
Aussagen.Klicken Sie auf die switch-Case-Anweisungen und wählen Sie die option
replace with if
option durch Android Studio.Das ist es. Jetzt können Sie die ZXing-Bibliothek in Ihre eigene app. 🙂
Zur Nutzung der Bibliothek Hinzugefügt, verwenden Sie einfach die
Intents
wie bereits in der ersten Antwort oben (kopieren des gleichen codes):Beim Scannen (wie beim klicken auf einen button), send Intent:
Dann, in
OnActivityResult
:Ich habe versucht, so deskriptiv wie möglich. Ich hoffe, dass die Menschen es nützlich finden.
Lesen Sie bitte diese Antwort von einem der Autoren der code zum kopieren des Codes in Ihre eigene app: https://stackoverflow.com/a/9942761
Referenzen:
https://stackoverflow.com/a/29818279
https://stackoverflow.com/a/29960361
Und ein paar andere blogs/SO Antworten.
InformationsquelleAutor der Antwort T.M
Ich weiß nicht, warum es passiert ist, aber schließlich benutze ich eine andere Bibliothek. Ich benutze Zxing-android-minimal und tutorial von hier und hier. Jetzt funktioniert es.
InformationsquelleAutor der Antwort stackex
Ich bin wirklich spät, aber ich möchte Antworten auf diese für jemand anderen zu sein, half später. Dies ist nicht zu sagen, dass die oben genannten Methoden und die Lösung falsch, es ist nur eine zusätzliche info also, für die Entwickler, die er/Sie wählen den besseren Weg. Es ist gut, haben die tausend Wege zu gehen, als ein.
Also, lasst uns beginnen, in unserem gradle und fügen Sie
Aufrufen der Modul wie (zB: auf den button klicken):
Erhalten die Ergebnisse, wie:
}
Weitere Infos können Sie den link
https://github.com/pethoalpar/ZxingExample
InformationsquelleAutor der Antwort Ishimwe Aubain Consolateur
Wenn Sie Probleme haben, Auffinden der jar ist, wie ich, haben Sie hier die URL:
http://repo1.maven.org/maven2/com/google/zxing/
InformationsquelleAutor der Antwort Julián Vega
Ausarbeitung stackex Antwort.... Erstellen Sie eine Aktivität mit einem Namen.
Im manifest definieren Sie die gewünschte Position oder lassen Sie wie unten, um zu arbeiten, sowohl in landscape und portait.
Schließlich verwenden Sie die Aktivität erstellt, wie setCaptureActivity.
Hoffe, das hilft.
InformationsquelleAutor der Antwort Sachet Bajracharya
In meinem code kam ich auf diese version:
mit
Ich hoffe, dies hilft jemand.
Antonino
InformationsquelleAutor der Antwort Perry
Hier ist ein Weg, der funktioniert in eclipse:
ZXing-integration auf Basis von eclipse, android-app
Glücklich integration !
InformationsquelleAutor der Antwort Hubert Solecki