Android Barcode Scanner - auto display SQL data

651 Views Asked by At

I want to create android barcode scanner and display query result from SQL Database. The result can be retrieved with view button :

        btnview.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            if((edtproname.getText().toString().length()==28)&&(edtproname.getText() !=null))

            try {

                PreparedStatement statement = connect.prepareStatement("EXEC viewProduct '"+edtproname.getText().toString()+"'");
                String location = edtproname.getText().subSequence(20,28).toString();
                edtlocation.setText(location);

                rs = statement.executeQuery();
                while (rs.next()) {
                    edtproname.setText(rs.getString("ProName"));
                    edtprodesc.setText(rs.getString("ProDesc"));
                }
            } catch (SQLException e) {
                Toast.makeText(AddProducts.this, e.getMessage(),
                        Toast.LENGTH_LONG).show();
            }

            edtqty.requestFocus();
            InputMethodManager manager= (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
            manager.showSoftInput(edtqty, InputMethodManager.SHOW_FORCED);
        }

This is the barcode read event :

@Override
public void onBarcodeEvent(final BarcodeReadEvent event){
    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            String barcodeData = event.getBarcodeData();
            //String timestamp = event.getTimestamp();
            edtproname.setText(""+barcodeData);
}

how to accomplish with auto display after scanner result loaded? without view button? How to use hardware trigger show result directly?

I appreciate any help... Thank you.

Image : sample app

1

There are 1 best solutions below

0
On

Any event call acts like a trigger. So just use the run() function in onBarcodeEvent() to trigger the search. Just put the query code after you get the barcodeData string.

public void onBarcodeEvent(final BarcodeReadEvent event){
    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            String barcodeData = event.getBarcodeData();
            edtproname.setText(""+barcodeData);

            if(barcodeData.length()==28){

                try {

                    PreparedStatement statement = connect.prepareStatement("EXEC viewProduct '"+barcodeData+"'");
                    String location = edtproname.getText().subSequence(20,28).toString();
                    edtlocation.setText(location);

                    rs = statement.executeQuery();
                    while (rs.next()) {
                        edtproname.setText(rs.getString("ProName"));
                        edtprodesc.setText(rs.getString("ProDesc"));
                    }

                } catch (SQLException e) {
                    Toast.makeText(AddProducts.this, e.getMessage(),
                    Toast.LENGTH_LONG).show();
                }

                edtqty.requestFocus();
                InputMethodManager manager= (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                manager.showSoftInput(edtqty, InputMethodManager.SHOW_FORCED);

            }
        }
    });
}

And remove the view button.