Domanda

    

Questa domanda ha già una risposta qui:

         

Sono stato alla ricerca di come aggiungere uno scanner di codici a barre per la mia app. Ci sono esempi o come posso farlo facilmente?

È stato utile?

Soluzione

Il progetto ZXing offre invece un'applicazione stand-alone lettore codice a barre, che - attraverso il meccanismo intento di Android -. Può essere chiamato da altre applicazioni che desiderano integrare la scansione del codice a barre

Il modo più semplice per farlo è quello di chiamare il SCAN Intent ZXing dall'applicazione, come questo :

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

La pressione del pulsante collegato a mScan avrebbe lanciato direttamente nella schermata dello scanner di codici a barre ZXing (o crash se ZXing non è installato). Una volta che un codice a barre è stato riconosciuto, riceverai il risultato nel vostro Activity, qui nella variabile contents.

Per evitare il crash e semplificare le cose per voi, ZXing hanno ha fornito una classe di utilità che è possibile integrare nella vostra applicazione per rendere l'installazione di ZXing liscia, reindirizzando l'utente al Android Market se don 't hanno già installato.

Infine, se si desidera integrare la scansione di codici a barre direttamente nella vostra applicazione senza fare affidamento su avere installata l'applicazione ZXing separata, beh, allora si tratta di un progetto open source e si può farlo! :)


Modifica Qualcuno curato questa guida in questa risposta (che suona un po 'strano, non posso garantire per l'esattezza, e io non sono sicuro perché stanno usando Eclipse nel 2015 ):

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 importare progetto "Android" in ZXing-master
  3. Scarica core-3.2.1.jar da " http : //repo1.maven.org/maven2/com/google/zxing/core/3.2.1/ "
  4. Crea "libs" cartella nel progetto "Android" e incollare cor-3.2.1.jar nella cartella libs
  5. Fare clic sul progetto: scegliete "Proprietà" -> "Java Compiler" per cambiare il livello di 1.7. Poi clicca su "Android" cambiamento "Obiettivo del progetto di costruzione" per android 4.4.2+, perché l'utilizzo di 1.7 richiede la compilazione con Android 4.4
  6. Se "CameraConfigurationUtils.java" non esistono in "ZXing-master / android / app / src / main / java / com / google / ZXing / client / android / videocamera /". È possibile copiare da "ZXing-master / android-core / src / main / java / com / google / ZXing / client / android / videocamera /" e incollare al vostro progetto.
  7. Pulizia e costruire progetti. Se il vostro show errore del progetto di "switch - caso", li si dovrebbe cambiare in "se - altro".
  8. completata. Pulire e costruzione del progetto. È possibile fare clic su "parametri fisico"> "Android"> clicca su "Is Librerie" da utilizzare per il vostro progetto.

Altri suggerimenti

Ho avuto un problema con l'implementazione del codice fino a quando ho trovato qualche sito (non riesco a trovare di nuovo in questo momento), che ha spiegato che è necessario includere il nome del pacchetto in nome della intent.putExtra.

Sarebbe tirare su l'applicazione, ma non sarebbe riconoscere qualsiasi codici a barre, e quando ho cambiato da.

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

a

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

Ha funzionato alla grande. Solo un suggerimento per tutti gli altri programmatori Android inesperti.

Uso della condizione IntentInegrator è meglio. Esso consente per richiedere l'utente a installare lo scanner di codici a barre se non ce l'hanno. Esso permette inoltre di personalizzare i messaggi. La costante IntentIntegrator.REQUEST_CODE contiene il valore del codice di richiesta di onActivityResult per controllare in quanto sopra, se blocco.

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

Utilizzando ZXing questo modo richiede un utente di installare anche l'applicazione dello scanner di codici a barre, che non è l'ideale. Che probabilmente si desidera è quello di raggruppare ZXing nella vostra applicazione direttamente.

Mi consiglia di utilizzare questa libreria: https://github.com/dm77/barcodescanner

Ci vogliono tutte le problematiche di compilazione folli si sta andando a correre in cerca di integrare Xzing o Zbar direttamente. Esso utilizza queste librerie sotto le coperte, ma li avvolge in modo molto semplice da usare API.

Se si desidera includere nel codice e non utilizzare l'IntentIntegrator che la biblioteca ZXing consiglia, è possibile utilizzare alcune di queste porte:

Io uso il primo, e funziona perfettamente! Ha un progetto di esempio per provarlo.

Rilevamento del codice a barre è ora disponibile in Google Play servizi . Codice laboratorio del processo di installazione, ecco il documentazione API e un progetto di esempio .

È possibile utilizzare questa Guida rapida http: //shyyko.wordpress.com/2013/07/30/zxing-with-android-quick-start/ con semplice progetto di esempio per costruire app Android senza IntentIntegrator.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top