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

LibraryInformation

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

War es hilfreich?

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).

  1. Gradle -Abhängigkeit bereitstellen

    Kompilieren Sie 'com.edwardvanraak: materialsbarcodescanner: 0.0.6-alpha' '

  2. 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();
    }
    
  3. Haken Sie es an einen Knopf an

    fab.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
     startScan();
    }
    });
    
  4. Beginnen Sie mit Scannen!

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
  1. 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.

  2. Vergewissere dich webclass.class existieren in Ihrem QRcodesampleActivity.java

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