2015-01-08 3 views
24

Ich habe alle über das Internet suchen, wie ZXing Bibliothek zu meinem Projekt gehören, und ich fand dieses Tutorial: http://blog.dihaw.com/integrating-zxing-in-your-android-app-as-standalone-scanner/Wie integriere ich die ZXing Library in Android Studio zum Scannen von Barcodes?

Aber wenn ich den Punkt erreichen, die Sie für BeepManager überprüfen muss ich die R Import hinzuzufügen erhalten alle Arten von Fehlern in meinem Projekt (auch auf der MainActivity), die es nicht finden konnte R.

Auch ich fand dieses https://github.com/journeyapps/zxing-android-embedded/blob/master/README.md, die viel einfacher schien, weil es von Gradle automatisch integriert wurde, aber wenn ich es synchronisiere, knallt ein Fehler, dass die Dateien nicht gefunden werden konnten.

Jede Hilfe wäre zu schätzen :) Ich bin neu in Android Studio.

EDIT:

ich die Einstellungen des zweiten Verfahrens hinzugefügt (die mit den gradle Einstellungen) zu meinem build.gradle und 4 Fehler Pop-up:

Error:Failed to find: com.embarkmobile:zxing-android-legacy:2.0.0 
Error:Failed to find: com.google.zxing:core:3.0.1 
Error:Failed to find: com.embarkmobile:zxing-android-integration:2.0.0 
Error:Failed to find: com.embarkmobile:zxing-android-minimal:2.0.0 

Jede Hilfe?

--- --- ANTWORT

um dieses Problem zu beheben, musste ich die Offline-Arbeit auf Gradle deaktivieren. Gehen Sie in die Android Studio-Einstellungen> Gradle> Deaktivieren Sie "Offline-Arbeit" Danach sind Sie gut zu gehen!

+0

Spezifische Fehlermeldungen wäre hilfreich. Sie können die Formatierungsformatierung des blockquote-Typs ('>' am Anfang der Zeilen) verwenden, um sie voneinander abzugrenzen und sicherzustellen, dass Ihre Frage lesbar ist. Verwenden Sie den [Link bearbeiten] (https://stackoverflow.com/posts/27851512/edit) am Ende Ihrer Frage, um Änderungen vorzunehmen. –

+0

ZXing ist nicht die einzige Möglichkeit, einen Barcode zu lesen. Ab 2016 ist es viel einfacher, die [Android Barcode API] (http://stackoverflow.com/questions/6327483/implement-bar-code-scanner-in-android/38881708#38881708) zu verwenden. –

Antwort

36

Sie müssen Folgendes zu Ihrer build.gradle Datei hinzufügen:

repositories { 
    mavenCentral() 

    maven { 
     url "http://dl.bintray.com/journeyapps/maven" 
    } 
} 

dependencies { 
    // Supports Android 4.0.3 and later (API level 15) 
    compile 'com.journeyapps:zxing-android-embedded:[email protected]' 

    // Supports Android 2.1 and later (API level 7), but not optimal for later Android versions. 
    // If you only plan on supporting Android 4.0.3 and up, you don't need to include this. 
    compile 'com.journeyapps:zxing-android-legacy:[email protected]' 

    // Convenience library to launch the scanning and encoding Activities. 
    // It automatically picks the best scanning library from the above two, depending on the 
    // Android version and what is available. 
    compile 'com.journeyapps:zxing-android-integration:[email protected]' 

    // Version 3.0.x of zxing core contains some code that is not compatible on Android 2.2 and earlier. 
    // This mostly affects encoding, but you should test if you plan to support these versions. 
    // Older versions e.g. 2.2 may also work if you need support for older Android versions. 
    compile 'com.google.zxing:core:3.0.1' 
} 

Meine build.gradle-Datei wie folgt:

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 21 
    buildToolsVersion "21.1.2" 

    defaultConfig { 
     applicationId "com.myapplication2" 
     minSdkVersion 16 
     targetSdkVersion 21 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

repositories { 
    mavenCentral() 

    maven { 
     url "https://raw.github.com/embarkmobile/zxing-android-minimal/mvn-repo/maven-repository/" 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:appcompat-v7:21.0.3' 
    // Supports Android 4.0.3 and later (API level 15) 
    compile 'com.embarkmobile:zxing-android-minimal:[email protected]' 

    // Supports Android 2.1 and later (API level 7), but not optimal for later Android versions. 
    // If you only plan on supporting Android 4.0.3 and up, you don't need to include this. 
    compile 'com.embarkmobile:zxing-android-legacy:[email protected]' 

    // Convenience library to launch the scanning and encoding Activities. 
    // It automatically picks the best scanning library from the above two, depending on the 
    // Android version and what is available. 
    compile 'com.embarkmobile:zxing-android-integration:[email protected]' 

    // Version 3.0.x of zxing core contains some code that is not compatible on Android 2.2 and earlier. 
    // This mostly affects encoding, but you should test if you plan to support these versions. 
    // Older versions e.g. 2.2 may also work if you need support for older Android versions. 
    compile 'com.google.zxing:core:3.0.1' 
} 

Der Code ist here.

Auch dafür, wie es zu benutzen, bitte meine Antwort auf der Stackoverflow here

Es enthält Verfahren und auch einfacher Code verweisen, die ich getestet habe.

+0

Ich habe diese Einstellung zu meinem Fehler build.gradle und 4 error hinzugefügt: Fehler: Fehler beim Suchen: com.embarmobile: zxing-android-legacy: 2.0.0 Fehler: Fehler beim Suchen: com.google.zxing: core : 3.0.1 Fehler: Konnte nicht finden: com.embarmarkmobile: zxing-android-integration: 2.0.0 Fehler: Konnte nicht finden: com.embarmarkmobile: zxing-android-minimal: 2.0.0 Irgendwelche Hilfe? Dies ist der gleiche Fehler, der vor –

+0

aufgetreten ist Gelöst es! Ich werde eine Antwort erarbeiten –

+0

Froh, zu helfen, Prost! – bjiang

16

Ab Version 3 von ZXing-android-embedded Sie diese an Ihre build.gradle Datei hinzufügen müssen:

repositories { 
    jcenter() 
} 

dependencies { 
    compile 'com.journeyapps:zxing-android-embedded:[email protected]' 
    compile 'com.google.zxing:core:3.2.0' 
} 

Folgen Sie den Anweisungen: https://github.com/journeyapps/zxing-android-embedded/

Es erlaubt nun auch für Portrait-Modus mit einfache Änderungen an der IntentIntegrator und einfachere Möglichkeiten zum Anpassen der Ansichten.

+0

Hallo, Bruder. Haben Sie CompoundBarcodeView in ZXing embedded verwendet? –

+0

Ja. Ich beginne mit der Sichtbarkeit des ViewFinders als INVISIBLE und wechsle auf VISIBLE, wenn eine Schaltfläche angeklickt wird, die auch decodeSingle für einen einzelnen Scan aufruft. Auf diese Weise zeigt die Ansicht, was die Kamera sieht, aber ohne die rote Linie und die gelben Flecken des ViewFinders, bis der Benutzer tatsächlich erfassen möchte. Aber das ist natürlich das, was ich für meine App benötige. –

+0

Dies muss die neue "akzeptierte Antwort" sein! –

1

Ich habe es mit dieser Arbeit:

repositories { mavenCentral() 
    maven { url "https://raw.github.com/embarkmobile/zxing-android-minimal/mvn-repo/maven-repository/" } 
} 

compile 'com.google.zxing:core:3.2.1' 
compile 'com.embarkmobile:zxing-android-minimal:[email protected]' 
compile 'com.embarkmobile:zxing-android-integration:[email protected]' 

Ich empfehle die IntentIntegrator mit

IntentIntegrator integrator = new IntentIntegrator(getActivity()); 
integrator.forSupportFragment(this).initiateScan(); 

Die requestCode mit IntentIntegrator.REQUEST_CODE kommt zurück

3

Der einfachste Weg ZXing für Barcode zu integrieren oder Qr Scannen.

Für Voll Referenz: Scan Barcode ZXing Android

in Abhängigkeiten hinzufügen

compile 'me.dm7.barcodescanner:zxing:1.9' 

ScanActivity

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.Log; 
import com.google.zxing.Result; 

import me.dm7.barcodescanner.zxing.ZXingScannerView; 

public class ScanActivity extends AppCompatActivity implements ZXingScannerView.ResultHandler{ 

    private ZXingScannerView mScannerView; 

    @Override 
    public void onCreate(Bundle state) { 
     super.onCreate(state); 
     mScannerView = new ZXingScannerView(this); // Programmatically initialize the scanner view 
     setContentView(mScannerView);    // Set the scanner view as the content view 
    } 

    @Override 
    public void onResume() { 
     super.onResume(); 
     mScannerView.setResultHandler(this); // Register ourselves as a handler for scan results. 
     mScannerView.startCamera();   // Start camera on resume 
    } 

    @Override 
    public void onPause() { 
     super.onPause(); 
     mScannerView.stopCamera();   // Stop camera on pause 
    } 

    @Override 
    public void handleResult(Result rawResult) { 
     // Do something with the result here 
     // Log.v("tag", rawResult.getText()); // Prints scan results 
     // Log.v("tag", rawResult.getBarcodeFormat().toString()); // Prints the scan format (qrcode, pdf417 etc.) 

     MainActivity.tvresult.setText(rawResult.getText()); 
     onBackPressed(); 

     // If you would like to resume scanning, call this method below: 
     //mScannerView.resumeCameraPreview(this); 
    } 
} 
Verwandte Themen