package example.zxing; import android.app.Activity; import android.graphics.Color; import android.os.Bundle; import android.view.KeyEvent; import android.view.View; import android.widget.ImageView; import com.google.zxing.BarcodeFormat; import com.google.zxing.ResultPoint; import com.google.zxing.client.android.BeepManager; import com.journeyapps.barcodescanner.BarcodeCallback; import com.journeyapps.barcodescanner.BarcodeResult; import com.journeyapps.barcodescanner.DecoratedBarcodeView; import com.journeyapps.barcodescanner.DefaultDecoderFactory; import java.util.Arrays; import java.util.Collection; import java.util.List; /** * This sample performs continuous scanning, displaying the barcode and source image whenever * a barcode is scanned. */ public class ContinuousCaptureActivity extends Activity { private DecoratedBarcodeView barcodeView; private BeepManager beepManager; private String lastText; private BarcodeCallback callback = new BarcodeCallback() { @Override public void barcodeResult(BarcodeResult result) { if(result.getText() == null || result.getText().equals(lastText)) { // Prevent duplicate scans return; } lastText = result.getText(); barcodeView.setStatusText(result.getText()); beepManager.playBeepSoundAndVibrate(); //Added preview of scanned barcode ImageView imageView = findViewById(R.id.barcodePreview); imageView.setImageBitmap(result.getBitmapWithResultPoints(Color.YELLOW)); } @Override public void possibleResultPoints(List resultPoints) { } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.continuous_scan); barcodeView = findViewById(R.id.barcode_scanner); Collection formats = Arrays.asList(BarcodeFormat.QR_CODE, BarcodeFormat.CODE_39); barcodeView.getBarcodeView().setDecoderFactory(new DefaultDecoderFactory(formats)); barcodeView.initializeFromIntent(getIntent()); barcodeView.decodeContinuous(callback); beepManager = new BeepManager(this); } @Override protected void onResume() { super.onResume(); barcodeView.resume(); } @Override protected void onPause() { super.onPause(); barcodeView.pause(); } public void pause(View view) { barcodeView.pause(); } public void resume(View view) { barcodeView.resume(); } public void triggerScan(View view) { barcodeView.decodeSingle(callback); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { return barcodeView.onKeyDown(keyCode, event) || super.onKeyDown(keyCode, event); } }