2015-01-08 42 views
24

Ho cercato dappertutto internet come includere ZXing biblioteca per il mio progetto, e ho trovato questo tutorial: http://blog.dihaw.com/integrating-zxing-in-your-android-app-as-standalone-scanner/Come integrare la libreria ZXing su Android Studio per la scansione dei codici a barre?

Ma quando raggiungo il punto che è necessario verificare la presenza di BeepManager aggiungere l'importazione R ottengo tutti i tipi di errori nel mio progetto (Even on the MainActivity) che non è riuscito a trovare R.

Inoltre ho trovato questo uno https://github.com/journeyapps/zxing-android-embedded/blob/master/README.md che mi è sembrato molto più facile perché era integrato automaticamente da gradle, ma quando lo sincronizzo viene visualizzato un errore che non è riuscito a trovare i file.

Qualsiasi aiuto sarebbe apprezzato :) Sono nuovo di Android Studio.

EDIT:

ho aggiunto le impostazioni del secondo metodo (quello con le impostazioni Gradle) al mio build.gradle e 4 Errore di 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 

Qualsiasi aiuto?

--- --- RISPOSTA

Per risolvere questo problema ho bisogno di disattivare Non in linea Gradle. Accedi alle impostazioni di Android Studio> Gradle> Deseleziona 'offline work' Dopodiché, sei a posto!

+0

messaggi di errore specifici sarebbe utile. Puoi usare la formattazione del markdown del tipo blockquote ('>' all'inizio delle linee) per metterla da parte e assicurarti che la tua domanda sia leggibile. Utilizza il [modifica collegamento] (https://stackoverflow.com/posts/27851512/edit) nella parte inferiore della domanda per apportare modifiche. –

+0

ZXing non è l'unico modo per leggere un codice a barre. A partire dal 2016, è molto più semplice utilizzare [Android Barcode API] (http://stackoverflow.com/questions/6327483/implement-bar-code-scanner-in-android/38881708#38881708). –

risposta

36

È necessario aggiungere il seguente al file build.gradle:

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' 
} 

mio build.gradle file in questo modo:

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' 
} 

Il codice è here.

Inoltre, per come utilizzarlo, consultare la mia risposta sul StackOverflow here

Contiene metodo e anche semplice codice che ho provato.

+0

Ho aggiunto quelle impostazioni al mio build.gradle e 4 errore pop-up: Errore: impossibile trovare: com.embarkmobile: zxing-android-legacy: 2.0.0 Errore: impossibile trovare: com.google.zxing: core : 3.0.1 Errore: impossibile trovare: com.embarkmobile: zxing-android-integration: 2.0.0 Errore: impossibile trovare: com.embarkmobile: zxing-android-minimal: 2.0.0 Qualsiasi aiuto? Questo è lo stesso errore accaduto prima di –

+0

Risolto! Elaborerò una risposta –

+0

Felice di aiutare, evviva! – bjiang

16

A partire dalla versione 3 di ZXing-android-embedded è sufficiente aggiungere questi alla vostra build.gradle del file:

repositories { 
    jcenter() 
} 

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

seguire i passaggi in: https://github.com/journeyapps/zxing-android-embedded/

Esso consente ora anche per la modalità ritratto con semplici modifiche allo IntentIntegrator e modi più semplici per personalizzare le visualizzazioni.

+0

Ciao, fratello. Hai usato CompoundBarcodeView in ZXing incorporato? –

+0

Sì. Inizio con la visibilità di ViewFinder come INVISIBILE e cambio in VISIBILE quando si fa clic su un pulsante, che chiama anche decodeSingle per una singola scansione. In questo modo la vista mostra ciò che vede la telecamera, ma senza la linea rossa e le patch gialle di ViewFinder, fino a quando l'utente non vuole effettivamente catturarlo. Ma naturalmente, questo è quello che mi serviva per la mia app, la tua potrebbe averne bisogno e visibile per tutto il tempo. –

+0

Questa deve essere la nuova "risposta accettata"! –

1

ce l'ho lavorare con questo:

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]' 

mi consiglia di utilizzare l'IntentIntegrator

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

Il requestCode torna con IntentIntegrator.REQUEST_CODE

3

Il modo più semplice per integrare ZXing per codici a barre o Scansione Qr.

Per riferimento completo: Scan Barcode ZXing Android

Aggiungi a dipendenze

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); 
    } 
}