Ho cercato su come aggiungere uno scanner di codici a barre alla mia app. Qualcuno sa di qualche esempio o sa come farlo facilmente?Utilizzo di ZXing per creare un'app per la scansione di codici a barre Android
risposta
Il progetto ZXing fornisce un'applicazione di lettore di codici a barre standalone che — tramite il meccanismo di intento di Android — può essere chiamato da altre applicazioni che desiderano integrare la scansione di codici a barre.
Il modo più semplice per farlo è quello di chiamare lo ZXing SCAN
Intent
dall'applicazione, like this:
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
}
}
}
Premendo il pulsante collegato a mScan
avrebbe lanciato direttamente nella schermata dello scanner ZXing codice a barre (o crash se ZXing non è installato). Una volta che un codice a barre è stato riconosciuto, riceverai il risultato nel tuo Activity
, qui nella variabile contents
.
Per evitare l'arresto anomalo e semplificare le cose per voi, ZXing dispone di provided a utility class che è possibile integrare nell'applicazione per rendere più scorrevole l'installazione di ZXing, reindirizzando l'utente all'Android Market se non è già installato.
Infine, se si desidera integrare la scansione dei codici a barre direttamente nell'applicazione senza fare affidamento sull'avvio dell'applicazione ZXing separata, allora è un progetto open source e lo si può fare! :)
Edit: 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 utilizzando Eclipse 2015):
passo dopo passo per l'installazione ZXing 3.2.1 in Eclipse
- Scarica zxing-master.zip da "https://github.com/zxing/zxing"
- U nzip zxing-master.zip, utilizzare Eclipse per importare progetto "Android" in ZXing-master
- Scarica core-3.2.1.jar dalla cartella "http://repo1.maven.org/maven2/com/google/zxing/core/3.2.1/"
- Crea "librerie" a progetto "Android" e incollare cor -3.2.1.jar nella cartella libs
- Fare clic sul progetto: selezionare "Proprietà" -> "Compilatore Java" per modificare 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
- 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.
- Pulire e costruire il progetto. Se il tuo progetto mostra un errore in "caso - caso", dovresti cambiarlo in "if - else".
- Completato. Pulisci e costruisci il progetto. È possibile fare clic su "Proprties"> "Android"> fare clic su "Is Libraries" da utilizzare per il progetto.
Grazie ragazzi! Sono uno sviluppatore Android principiante e volevo davvero solo iniziare a capire cosa sarebbe servito per far funzionare uno scanner di codici a barre. Ho ancora bisogno di capire come aggiungere anche com.google.zxing al mio progetto. È così facile come usare com.google.zxing nel mio codice o devo scaricare il codice sorgente e importarlo nel mio file manifest? – wajiw
(Sono il dev del progetto BTW - possiamo continuare su http://groups.google.com/group/zxing/) Christopher ha ragione. Usando un codice come questo non è necessario importare alcun codice progetto. Stai chiamando l'app Barcode Scanner tramite Intent; nessun codice di scansione del codice a barre nella tua app. –
Il modo veramente carino per farlo è un po 'più di codice, che assicurerà che all'utente venga richiesto in modo pulito di installare Barcode Scanner se necessario. Questo è l'altro link a cui si riferiva.Copia il corso all'indirizzo http://code.google.com/p/zxing/source/browse/trunk/android-integration/src/com/google/zxing/integration/android/IntentIntegrator.java e usalo. Ancora nessun altro codice necessario. Se vuoi, puoi andare fino in fondo e incorporare il codice di scansione, ma senza un duro motivo per farlo, è solo più difficile per te. –
L'utilizzo dell'IntentInegrator fornito è migliore. Ti consente di richiedere all'utente di installare lo scanner del codice a barre se non lo possiede. Permette anche di personalizzare i messaggi. The IntentIntegrator.La costante REQUEST_CODE contiene il valore del codice di richiesta per onActivityResult da verificare nel blocco sopra se.
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
ho avuto un problema con il codice implimenting 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 di l'intent.putExtra.
Avrebbe tirato su l'applicazione ma non avrebbe riconosciuto alcun codice a barre e quando l'ho cambiato.
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 consiglio per qualsiasi altro programmatore andorid principiante.
Non riuscivo a farlo funzionare finché non ho seguito questa risposta, quindi sembra che sia essenziale farlo. Grazie per il consiglio! – casper
Se si desidera includere nel codice e non utilizzare l'IntentIntegrator che la biblioteca ZXing raccomando è possibile utilizzare alcune di queste porte
http://code.google.com/p/android-zxinglib/
http://code.google.com/p/android-quick-response-code/
Io uso il primo e funziona perfettamente ! Ha un progetto di esempio per provarlo
Il primo supporta solo la scansione. Il secondo è un buon esempio di codifica di un codice QR, ha funzionato per me. –
È possibile utilizzare questa guida rapida http://shyyko.wordpress.com/2013/07/30/zxing-with-android-quick-start/ con un semplice progetto di esempio per creare un'app per Android senza IntentIntegrator.
Ho provato il tuo progetto di esempio e non riesco a farlo scansionare un QRCode, in logcat sto ricevendo 'com.google.zxing.NotFoundException' e' Decode Fail' ... a 'DecodeAsyncTask' (Inner class di 'PreviewCallback'), il risultato ricevuto da' onPostExecute' è sempre nullo, anche se il QRCode si trova all'interno del rettangolo di inquadratura ... inoltre non vedo né il "laser", né i punti candidati gialli che appaiono all'originale app zxing (non sono sicuro se l'hai implementata ...) lo ha trovato –
! è solo la scansione in modalità orizzontale ... qualche idea su come risolverlo? –
Non esiste un "laser", né i punti candidati gialli, perché è solo un esempio di come ZXing può essere integrato nel caso in cui si desideri utilizzare layout e caratteristiche diversi rispetto all'approccio Intent. Se utilizzi il layout di Intent per te, è meglio che tu stia attenta all'approccio proposto da Christopher Orr. –
L'utilizzo di Zxing in questo modo richiede che l'utente installi anche l'applicazione per scanner di codici a barre, che non è l'ideale. Quello che probabilmente vuoi è raggruppare Zxing direttamente nella tua app.
Consiglio vivamente l'utilizzo di questa libreria: https://github.com/dm77/barcodescanner
Prende tutte le problematiche di compilazione folli si sta andando a correre in cerca di integrare Xzing o Zbar direttamente. Usa queste librerie sotto le copertine, ma le avvolge in un'API molto semplice da usare.
Rilevamento codice a barre ora disponibile in Google Play services. Code lab del processo di installazione, ecco lo api docs e uno sample project.
Questo è più facile che usare Zxing. –
Controllare [la mia risposta dettagliata] (http://stackoverflow.com/a/30572168/165071) con schermate e app Android di esempio. –
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). –