2011-04-09 17 views
11

Ho scaricato lo zxing 1.6 ed è stato in grado di eseguire con successo uno scanner di codici a barre autonomo attraverso di esso. Ora questo scanner è in un altro progetto e (il CaptureActivity) e ho il diverso progetto della mia app chiamato MyProj, tutto quello che voglio fare èè fare clic sul pulsante nella mia chiamata di progetto CaptureActivity in un altro progetto, come posso importare l'intero progetto in il mio progetto o quello che faccio lo fa funzionare. Ringraziamenti in anticipoChiamare scanner di codici a barre su un pulsante fare clic su applicazione Android

+1

c'è un tipo di meme generico che posso chiamare per "scansione di codici a barre"? questo intento specifica esplicitamente l'app di zxing. – masi

+0

'com.google.zxing.client.android.SCAN' è il generico' Intento' per la scansione. È solo che ZXing è presente da Android 1.0, quindi è lo standard di fatto. Non seleziona solo Barcode Scanner. –

risposta

33

Penso che copiare "Barcode Scanner" e includerlo nella tua app potrebbe sovraccaricare i tuoi progetti. Si dovrebbe certamente utilizzare l'intento dallo Scanner:

Da qui: http://code.google.com/p/zxing/wiki/ScanningViaIntent

Se lo scanner di codici a barre è installato sul vostro dispositivo Android, si può avere la scansione per voi e restituire il risultato, semplicemente inviando un Intent. Ad esempio, è possibile collegare un pulsante per la scansione di un codice QR 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.setPackage("com.google.zxing.client.android"); 
     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 
     } 
    } 
} 

Per ulteriori opzioni, come la scansione di un codice a barre del prodotto, o chiedendo Barcode Scanner per codificare e visualizzare un codice a barre per voi, questa fonte File:

http://code.google.com/p/zxing/source/browse/trunk/android/src/com/google/zxing/client/android/Intents.java

Ed ecco qualche fonte dalla nostra applicazione di prova che dimostra come usarli:

http://code.google.com/p/zxing/source/browse/trunk/androidtest/src/com/google/zxing/client/androidtest/ZXingTestActivity.java

IntentIntegrator

Abbiamo anche iniziato a creare una piccola libreria di classi che racchiudono alcuni dei dettagli sopra. Vedi IntentIntegrator per un modo forse più semplice di integrare. In particolare questo gestirà il caso in cui Barcode Scanner non è stato ancora installato.

http://code.google.com/p/zxing/source/browse/trunk/android-integration/src/com/google/zxing/integration/android/IntentIntegrator.java

Via URL Come di Barcode Scanner v2.6, è anche possibile lanciare l'applicazione da un URL nel browser. Semplice creare un collegamento ipertestuale a http://zxing.appspot.com/scan e Barcode Scanner offrirà di lanciare per gestirlo. Gli utenti possono anche scegliere di avere sempre il Barcode Scanner aperto automaticamente.

NOTA: questo URL non è destinato a servire una pagina Web reale in un browser, è solo un gancio per avviare un'applicazione nativa.

Problemi noti jamesikanos utente segnala la 'Gotcha' seguente:

Creare un'attività TabHost con launchMode "SingleInstance" Creare un'attività bambino con un "Start Scan" pulsante (lancio ZXing utilizzando l'IntentIntegrator da questo pulsante) onActivityResult nell'attività figlio tornerà immediatamente come "annullato" onActivityResult non viene mai chiamato successivamente

+0

Se si avvia l'intento senza impostare il pacchetto, si otterrà il lettore di codice qr predefinito installato (qr druid nel mio caso) o una finestra di dialogo di appchooser se si dispone di più di un – Radon8472

Problemi correlati