2011-12-01 16 views
25

Sto cercando di integrare ZXing QR Code nella mia app Android senza installare Barcode Scanner app, ho seguito i passaggi come:Integrare scanner di codici a barre senza installare ZXing Barcode Scanner

1) In primo luogo ho scaricato ZXing.zip file ed estrailo

2) apri il progetto ZXing come un progetto Android esistente e poi vai alla cartella Android e apri la cartella Android e includi anche il file core.jar nel progetto ZXing denominato CaptureActivity.

3) Ho usato il progetto CaptureActivity come libreria nel mio progetto denominato 'QRCodeSample'. (Problema nel compresa CaptureActivity come una libreria)

4) Il mio codice è il below3:

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

} 

Il file manifesto è:

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

e la sua biblioteca non aggiungendo anche

LibraryInformation

Quando sto cercando di ru n mio progetto, il msg di errore è:

Impossibile istanziare attività ComponentInfo {com.qr.code/com.qr.code}: java.lang.ClassNotFoundException: com.qr.code nel loader dalvik.system.PathClassLoader [/data/app/com.qr.code-1.apk]

+0

Per includere ZXing è possibile l'ho fatto. Penso che tu usi qualche altra lezione. Non riesco a ricordare che zxing utilizza lo spazio dei nomi com.qr.code – rekire

+0

Perché stai usando un progetto di libreria. Puoi costruire la libreria zxing scaricata su un file jar usando formica e includi quel file jar nel tuo progetto. Ecco il link per le istruzioni http://code.google.com/p/zxing/wiki/GettingStarted – blessenm

+0

Sei sicuro che questo funzioni anche per Android? Ho creato la mia libreria con alcune estensioni personalizzate. – rekire

risposta

23

Finalmente ho avuto la risposta,

come di ADT 14, i campi di risorse (come R.id.decode) non sono costanti più lunghe quando definite nei progetti di libreria

Quindi nella libreria ZXing-> android-> com.google.zxing.client.android.CaptureActivityHandler.java e Deco deHandler.java

Sostituire entrambe queste classi di passare istruzioni case con if-else, e quindi importare questa libreria ZXing nel progetto ..

Resto della codificazione di un mio progetto è lo stesso ... solo il problema con le classi della libreria come questi non vengono aggiornati in base alle ADT 14 ..

Kanika

+21

Si prega di non integrare il nostro codice come progetto di biblioteca. Si prega di scrivere la propria app per scanner e riutilizzare i pezzi se necessario. Non l'abbiamo aperto per farvi clonare in questo modo. –

+0

Ho creato tutto come descritto ma ho comunque ottenuto quell'eccezione. Perché non riesco a raggiungere quelle lezioni? L'ho aggiunto come libreria e ho aggiunto anche core.jar come jar esterno. AndroidRuntime (6316): java.lang.RuntimeException: impossibile creare un'istanza di attività ComponentInfo {com.sonqr/com.google.zxing.client.android.CaptureActivity}: java.lang.ClassNotFoundException: com.google.zxing.client.android. CaptureActivity –

+0

rispetto a @Kanika – Samer

0
  1. Dopo aver importato ZXing come progetto esistente, Proprietà> Java Buildpath> check "è la biblioteca" (pulsante di controllo) e quindi prova ad aggiungere Zxing come libreria.

  2. Assicurarsi webclass.class esistono nella vostra QRcodesampleActivity.java

3

ho avuto lo stesso problema e dopo ore alle prese con essa sono finalmente riuscito a risolvere in questo modo.come Rubiraj punta

* fare clic destro sul vostro progetto> Proprietà> Android> (in biblioteca scheda) Aggiungere il progetto ZXing *

Dando per scontato che sono stati in grado di creare in modo corretto progetto ZXing come una libreria come è spiegato qui: http://damianflannery.wordpress.com/2011/06/13/integrate-zxing-barcode-scanner-into-your-android-app-natively-using-eclipse/

4

è necessario seguire passo come proposta dal collegamento

http://www.androidaz.com/development/zxing-qr-reader-direct-integration

è possibile scaricare core.jar da

http://repo1.maven.org/maven2/com/google/zxing/core/2.2/

È possibile che questo sta lavorando per me, se il programma ancora solo mettere il core-2.2.jar in librerie e pulire il vostro progetto

+0

è una correzione standard? Hai postato la stessa risposta a diverse domande – acutesoftware

+0

+1 Grazie per il link, Saluti !!! –

+0

Il primo link che hai fornito è già morto. – shadox

17

Per tutti quegli utenti Android Studio/Gradle là fuori ragazzi

Va bene, come il mio compito oggi wa s per integrare ZXING in un'applicazione Android e non ci sono state buone fonti di input dappertutto, ti darò un suggerimento su cosa ha reso il mio successo - perché è risultato essere molto semplice (sulla versione 2. *).

C'è un vero repository git pratico che fornisce il progetto della libreria Android zxing come archivio AAR.

Tutto quello che dovete fare è aggiungere questo alla tua build.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:[email protected]' 
} 

e Gradle fa tutta la magia per compilare il codice e lo rende accessibile nella vostra app .

per avviare lo scanner in seguito, utilizzare questa classe/metodo:

IntentIntegrator.initiateScan(this); // `this` is the current Activity 

Se hai già visitato il link vuoi vedere che basta copiare & incollato il codice da lì il readme git. Se no, vai lì per ottenere ulteriori informazioni e esempi di codice!

Spero di essere utile per i futuri lettori. La pace :)

+0

Questo mi sembra molto utile solo per i codici a barre. Ho bisogno di usarlo con i codici QR. Ho sbagliato? – KairisCharm

+0

Funziona anche per i codici QR –

+0

Ciao, ho scaricato le fonti dal link che hai fornito.È possibile compilarlo in un file jar e quindi importarlo nel mio progetto Android Studio? Se sì, puoi fornire qualche link/istruzioni su come costruirlo? Sarei molto felice. Grazie in anticipo. – greenskin

1

Passo dopo passo per l'installazione ZXing 3.2.1 in Eclipse

  1. Scarica zxing-master.zip da "https://github.com/zxing/zxing"
  2. Unzip zxing-master.zip, utilizzare Eclipse per l'importazione progetto "android" in zxing-master
  3. Download core-3.2.1.jar da "http://repo1.maven.org/maven2/com/google/zxing/core/3.2.1/"
  4. Creare la cartella "libs" nel progetto "android" e incollare cor-3.2.1.jar nella cartella libs
  5. Fare clic sul progetto: selezionare "Proprietà" -> "Compilatore Java" per cambiare il livello in 1.7. Quindi fai clic su "Android" cambia "Project build target" su Android 4.4.2+, perché l'utilizzo di 1.7 richiede la compilazione con Android 4.4
  6. Se "CameraConfigurationUtils.java" non esiste in "zxing-master/android/app/src/main/java/com/google/ZXing/client/android/videocamera /". Puoi copiarlo da "zxing-master/android-core/src/main/java/com/google/zxing/client/android/camera /" e incollarlo nel tuo progetto.
  7. Pulire e costruire il progetto. Se il tuo progetto mostra un errore in "caso - caso", dovresti cambiarlo in "if - else".
  8. Completato. Pulisci e costruisci il progetto. Fai clic su "Proprties"> "Android"> fai clic su "Is Libraries" da utilizzare per il tuo progetto
2

MaterialBarcodeScanner: Lettore di codici a barre facile da utilizzare per il tuo progetto Android (utilizza l'API di Google Mobile Vision).

  1. Fornire dipendenza Gradle

    compilazione 'com.edwardvanraak: MaterialBarcodeScanner: 0.0.6-ALPHA'

  2. Costruire un 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. collegarlo ad un pulsante

    fab.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
    startScan(); 
    } 
    }); 
    
  4. Avvia scansione!

+0

Come posso utilizzare questa libreria per la scansione continua (ad esempio senza dover toccare il pulsante)? – LRMAAX

Problemi correlati