Search code examples
androidbarcode-scanner

how to show bar-code scanning screen always?


How to show bar-code scanning screen always in android.

IntentIntegrator integrator = new IntentIntegrator(activity);   

Solution

  • first you need to add a FrameLayout to your layout.xml as a container for barcodeScannet :

    <FrameLayout
            android:id="@+id/barcode_scanner"
            android:layout_width="match_parent"
            android:layout_height="350dp" />
    

    after that you need to implement ZXingScannerView.ResultHandler in your activity or fragment

    then you need to add scanner to this view

    private ZXingScannerView mScannerView;
    
    ViewGroup v = (ViewGroup) mainView.findViewById(R.id.barcode_scanner);
    mScannerView = new ZXingScannerView(getActivity());
        v.addView(mScannerView);
    

    also you need to override onResume and onPause to start stop the camera:

    @Override
    public void onResume() {
        super.onResume();
        mScannerView.setResultHandler(this); // Register ourselves as a handler for scan results.
    // aslso check for camera permission here too
    }
    
    @Override
    public void onPause() {
        mScannerView.stopCamera();           // Stop camera on pause
        super.onPause();
    }
    

    then :

    @Override
    public void handleResult(Result rawResult) {
    
        AppLog.logE("result content", rawResult.getText()); // Prints scan results
        AppLog.logE("result name", rawResult.getBarcodeFormat().toString()); // Prints the scan format (qrcode, pdf417 etc.)
    
       // the resault of barcode will be given as an string rawResult.getText()
       // and you can do whatEver you want with it
       // handleBarcodeResult(rawResult.getText());
    
        final Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                mScannerView.resumeCameraPreview(BillPaymentFragment.this);
            }
        }, 2000);
    }
    

    and finally whenever you want to start the barcode scanner just call the following code :

    mScannerView.startCamera();