Frage

Diese Frage hat hier bereits eine Antwort:

Ich habe nach dem Hinzufügen eines Barcode -Scanners zu meiner App gesucht. Gibt es Beispiele oder wie kann ich das leicht machen?

War es hilfreich?

Lösung

Das ZXing -Projekt bietet eine eigenständige Anwendung von Barcode Reader, die - über Androids Absichtsmechanismus - von anderen Anwendungen aufgerufen werden kann, die Barcode -Scaning integrieren möchten.

Der einfachste Weg, dies zu tun, besteht darin, den Zxing anzurufen SCAN Intent aus Ihrer Bewerbung, so was:

public Button.OnClickListener mScan = new Button.OnClickListener() {
    public void onClick(View v) {
        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
        }
    }
}

Drücken der mit verbundenen Taste mScan Startet direkt in den Bildschirm ZXing Barcode Scanner (oder zum Absturz, wenn Zxing nicht installiert wird). Sobald ein Barcode erkannt wurde, erhalten Sie das Ergebnis in Ihrem Activity, hier in der contents Variable.

Um das Absturz zu vermeiden und die Dinge für Sie zu vereinfachen, haben Zxing bereitete eine Versorgungsklasse zur Verfügung Sie könnten in Ihre Anwendung integrieren, um die Installation von ZXing glatter zu machen, indem Sie den Benutzer auf den Android -Markt umleiten, wenn er ihn nicht bereits installiert hat.

Wenn Sie das Barcode -Scannen direkt in Ihre Anwendung integrieren möchten, ohne sich darauf zu verlassen, dass die separate ZXing -Anwendung installiert ist, dann ist es ein Open -Source -Projekt und Sie können dies tun! :)


Bearbeiten: Jemand hat diesen Leitfaden in diese Antwort bearbeitet (es klingt ein bisschen seltsam, ich kann nicht für seine Genauigkeit bürgen, und ich bin mir nicht sicher, warum er 2015 Eclipse verwendet):

Schritt für Schritt zum Einrichten von ZXing 3.2.1 in Sonnenfinsternis

  1. Download Zxing-master.zip von "https://github.com/zxing/zxing"
  2. Unzipe zxing-master.zip, verwenden Eclipse, um das "Android" -Projekt in Zxing-Master zu importieren
  3. Laden Sie Core-3.2.1.jar von "herunter"http://repo1.maven.org/maven2/com/google/zxing/core/2.2.1/"
  4. Erstellen
  5. 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
  6. 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.
  7. Projekt reinigen und bauen. Wenn Ihr Projekt Fehler zu "Switch - Fall" anzeigt, sollten Sie sie in "if - sonst" ändern.
  8. Abgeschlossen. Projekt reinigen und bauen. Sie können auf "Proprties"> "Android"> klicken auf "Auf" Bibliotheken ", die für Ihr Projekt verwendet werden können.

Andere Tipps

Ich hatte ein Problem mit der Implementierung des Codes, bis ich eine Website gefunden habe (ich kann ihn momentan nicht wieder finden), dass Sie den Paketnamen in den Namen der Absicht aufnehmen müssen.

Es würde die Anwendung hochziehen, aber es würde keine Barcodes erkennen, und als ich sie aus geändert habe.

intent.putExtra("SCAN_MODE", "QR_CODE_MODE");

zu

intent.putExtra("com.google.zxing.client.android.SCAN.SCAN_MODE", "QR_CODE_MODE");

Es hat großartig funktioniert. Nur ein Tipp für andere Anfänger Android -Programmierer.

Die Verwendung des bereitgestellten IntentInegrators ist besser. Sie können Ihren Benutzer auffordern, den Barcode -Scanner zu installieren, wenn er ihn nicht hat. Sie können auch die Nachrichten anpassen. Die Konstante intentIGEnegator.request_code hält den Wert des Anforderungscodes für die Onaktivitätsarbeit im obigen if If Block.

IntentIntegrator intentIntegrator = new IntentIntegrator(this); // where this is activity 
intentIntegrator.initiateScan(IntentIntegrator.ALL_CODE_TYPES); // or QR_CODE_TYPES if you need to scan QR

Intentintegrator.java

Durch die Verwendung von ZXing muss ein Benutzer auch die Barcode -Scanner -App installieren, was nicht ideal ist. Was Sie wahrscheinlich wollen, ist, Zxing direkt in Ihre App zu bündeln.

Ich empfehle dringend, diese Bibliothek zu verwenden: https://github.com/dm77/barcodescanner

Es erfordert alle verrückten Aufbauprobleme, die Sie versuchen werden, XZing oder Zbar direkt zu integrieren. Es verwendet diese Bibliotheken unter den Covers, wickelt sie jedoch in eine sehr einfache Verwendung von API.

Wenn Sie in Ihren Code einbeziehen möchten und den Intentintegrator, den die ZXing -Bibliothek empfiehlt, nicht verwenden möchten, können Sie einige dieser Ports verwenden:

Ich benutze das erste und es funktioniert perfekt! Es gibt ein Beispielprojekt, das Sie anprobieren können.

Die Barcode -Erkennung ist jetzt in verfügbar Google Play Services. Codelabor des Setup -Prozesses hier sind die API -Dokumente, und ein Beispielprojekt.

Sie können diesen Schnellstarthandbuch verwenden http://shyyko.wordpress.com/2013/07/30/zxing-with-android-quick-start/ Mit einfachem Beispielprojekt zum Erstellen von Android App ohne Intentintegrator.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top