Integrieren Sie den ZXing -QR -Code -Scanner, ohne den Barcode -Scanner zu installieren
-
26-10-2019 - |
Frage
Ich versuche, den ZXing -QR -Code in meine Android -App zu integrieren, ohne die Barcode -Scanner -App zu installieren. Ich habe die Schritte befolgt als:
1) Zunächst habe ich Zxing.zip -Datei heruntergeladen und extrahierte sie
2) Öffnen Sie das ZXing -Projekt als Android -vorhandenes Projekt, gehen Sie dann zum Android -Ordner und öffnen Sie den Android -Ordner und geben Sie auch die Core.jar -Datei in das ZXing -Projekt mit dem Namen CaptureActivity ein.
3) Ich habe das CaptureActivity -Projekt als Bibliothek in meinem Projekt namens 'QrCodesample' verwendet. (Problem bei der Einbeziehung von Kapitän als Bibliothek)
4) Mein Code ist unter3:
public class QRCodeSampleActivity extends Activity {
Button b1;
static String contents;
public static final int REQUEST_CODE = 1;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
b1 = (Button) findViewById(R.id.button1);
b1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
/*Intent intent = new Intent("com.google.zxing.client.android.SCAN");
intent.putExtra("com.google.zxing.client.android.SCAN.SCAN_MODE",
"QR_CODE_MODE");
startActivityForResult(intent, 0);*/
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) {
contents = intent.getStringExtra("SCAN_RESULT");
String format = intent.getStringExtra("SCAN_RESULT_FORMAT");
Log.i("Barcode Result", contents);
Intent i1 = new Intent(QRCodeSampleActivity.this, webclass.class);
startActivity(i1);
// Handle successful scan
} else if (resultCode == RESULT_CANCELED) {
// Handle cancel
Log.i("Barcode Result","Result canceled");
}
}
}
}
Die Manifestdatei lautet:
<uses-permission android:name="android.permission.CAMERA"/>
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<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="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>
<activity
android:label="@string/app_name"
android:name=".QRCodeSampleActivity" >
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".webclass"></activity>
</application>
</manifest>
und es fügt auch keine Bibliothek hinzu
Wenn ich versuche, mein Projekt auszuführen, lautet die Fehler -MSG:
Aktivitätskomponentinfo kann nicht instanziiert werden {com.qr.code/com.qr.code}: java.lang.classnotfoundException: com.qr.code in lader dalvik.system.pathClassloader [/data/app/com.qr.code-1 .APK
Lösung
Endlich bekam ich die Antwort,
Ab ADT 14 sind die Ressourcenfelder (wie R.Id.Decode) keine Konstanten mehr, wenn sie in Bibliotheksprojekten definiert sind
Also in der ZXing Library-> Android-> com.google.zxing.client.android.captureActivityHandler.java und decodeHandler.java
Ersetzen Sie diese beiden Klassen-Switch-Fallanweisungen durch IF-ELSE und importieren Sie diese ZXing-Bibliothek in Ihr Projekt.
Der Rest der Codierung meines eigenen Projekts ist gleich ... nur das Problem mit den Bibliotheksklassen, da diese nicht nach ADT 14 aktualisiert werden.
Kanika
Andere Tipps
Für all diese Android Studio/Gradle -Benutzer da draußen
Okay, Leute, wie meine heutige Aufgabe war es, Zxing in eine Android -Anwendung zu integrieren, und es gab keine guten Quellen für Input überall. Ich werde Ihnen einen Hinweis geben, was mich erfolgreich gemacht hat - - Denn es stellte sich heraus, dass es sehr einfach war (auf Version 2.*).
Es gibt ein echtes praktisches Git -Repository, das das Projekt ZXing Android Library als AAR -Archiv bereitstellt.
Alles, was Sie tun müssen, ist dies zu Ihrem Build hinzuzufügen. Gradle
repositories {
mavenCentral()
maven {
url "https://raw.github.com/embarkmobile/zxing-android-minimal/mvn-repo/maven-repository/"
}
}
dependencies {
compile 'com.google.zxing:core:2.2'
compile 'com.embarkmobile:zxing-android-minimal:1.2.1@aar'
}
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:
IntentIntegrator.initiateScan(this); // `this` is the current Activity
Wenn Sie den Link bereits besucht haben, werden Sie sehen, dass ich den Code nur kopiert und eingefügt habe, die Git Readme. Wenn nicht, gehen Sie dorthin, um weitere Einblicke- und Code -Beispiele zu erhalten!
Ich hoffe, für zukünftige Leser hilfreich zu sein. Frieden :)
Sie müssen Schritt folgen, wie der Link angegeben wird
http://www.androidaz.com/development/zxing-qr-reader-direct-integration
Sie können core.jar herunterladen
http://repo1.maven.org/maven2/com/google/zxing/core/2.2/
Das obige funktioniert für mich, wenn Ihr Programm immer noch den Core-2.2.Jar in Bibliotheken einfügt und Ihr Projekt reinigt
Ich hatte das gleiche Problem und nach Stunden kämpfte ich schließlich so, es so zu lösen. Wie Rubiraj zeigt
*Klicken Sie mit der rechten Maustaste auf Ihr Projekt> Eigenschaften> Android> (unter der Registerkartenbibliothek) Fügen Sie das ZXing -Projekt * hinzu *
Angenommen, Sie konnten das ZXing -Projekt als Bibliothek korrekt erstellen, wie es hier erläutert wird:http://damianflannery.wordpress.com/2011/06/13/integrate-zxing-barcode-scanner-into-your-android-app-nativ-using-eclipse/
MATERIALBARCODESCANNER: Einfach zu verwendender Barcode -Reader für Ihr Android -Projekt (verwendet Google Mobile Vision API).
Gradle -Abhängigkeit bereitstellen
Kompilieren Sie 'com.edwardvanraak: materialsbarcodescanner: 0.0.6-alpha' '
Bauen Sie einen Materialbarcodescanner
private void startScan() { /** * Build a new MaterialBarcodeScanner */ final MaterialBarcodeScanner mBarcodeScanner = new MaterialBarcodeScannerBuilder() .withActivity(MainActivity.this) .withEnableAutoFocus(true) .withBleepEnabled(true) .withBackfacingCamera() .withText("Scanning...") .withResultListener(new MaterialBarcodeScanner.OnResultListener() { @Override public void onResult(Barcode barcode) { barcodeResult = barcode; result.setText(barcode.rawValue); } }) .build(); mBarcodeScanner.startScan(); }
Haken Sie es an einen Knopf an
fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { startScan(); } });
Beginnen Sie mit Scannen!
Schritt für Schritt zum Einrichten von ZXing 3.2.1 in Sonnenfinsternis
- Download Zxing-master.zip von "https://github.com/zxing/zxing"
- Unzipe zxing-master.zip, verwenden Eclipse, um das "Android" -Projekt in Zxing-Master zu importieren
- Laden Sie Core-3.2.1.jar von "herunter"http://repo1.maven.org/maven2/com/google/zxing/core/2.2.1/"
- Erstellen
- Klicken Sie auf Projekt: Wählen Sie "Eigenschaften" -> "Java Compiler", um das Niveau auf 1.7 zu ändern. Klicken Sie dann auf "Android" Change "-Projektbuilding" auf Android 4.4.2+, da die Verwendung von 1.7 das Kompilieren mit Android 4.4 erfordert
- Wenn "cameraconfigurationutils.java" in "Zxing-Master/Android/App/Src/Main/Java/com/google/zxing/client/android/camera/" nicht vorhanden ist. Sie können es von "ZXING-MASTER/ANDROID-CORE/SRC/Main/Java/com/Google/ZXing/Client/Android/Camera/" kopieren und in Ihr Projekt einfügen.
- Projekt reinigen und bauen. Wenn Ihr Projekt Fehler zu "Switch - Fall" anzeigt, sollten Sie sie in "if - sonst" ändern.
- Abgeschlossen. Projekt reinigen und bauen. Sie können auf "Proprties"> "Android"> klicken auf "Auf" Bibliotheken ", die für Ihr Projekt verwendet werden können
Nach dem Importieren von ZXing als vorhandenes Projekt sind Eigenschaften> Java BuildPath> Check "Bibliothek" (Schaltfläche "(überprüfen Sie die Schaltfläche) und versuchen Sie dann, ZXing als Bibliothek hinzuzufügen.
Vergewissere dich
webclass.class
existieren in IhremQRcodesampleActivity.java