2

I'm new in WinDev and I'm trying to create an Android application on a honeywell device with a barcode scanner. I tried 2 different ways in Android Studio and they work. One is the following:

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import com.honeywell.scanintent.ScanIntent;

public class MainActivity extends Activity {
    TextView barcodeData = null;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        barcodeData = (TextView) findViewById(R.id.textView);
    }

    public void onSendButtonClick(View v) {
        Intent intentScan = new Intent(ScanIntent.SCAN_ACTION);
        intentScan.addCategory(Intent.CATEGORY_DEFAULT);

        intentScan.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        intentScan.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);

        int loadmode = 0;

        intentScan.putExtra("scan_mode",ScanIntent.SCAN_MODE_RESULT_AS_URI);
        this.startActivityForResult(intentScan, 5);
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent intent) {
        if (resultCode == ScanIntent.SCAN_RESULT_SUCCESSED) {
            String data = intent.getStringExtra(ScanIntent.EXTRA_RESULT_BARCODE_DATA);
            int format = intent.getIntExtra(ScanIntent.EXTRA_RESULT_BARCODE_FORMAT, 0);
            barcodeData.setText(data);
        }
        else{
            barcodeData.setText("FALLITO");
        }
    }
}

And the other way is this:

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.RemoteException;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import java.io.IOException;

import com.honeywell.decodemanager.DecodeManager;
import com.honeywell.decodemanager.SymbologyConfigs;
import com.honeywell.decodemanager.barcode.DecodeResult;
import com.honeywell.decodemanager.symbologyconfig.SymbologyConfigCode39;


public final class MainActivity extends Activity {

    private final int ID_SCANSETTING = 0x12;
    private final int ID_CLEAR_SCREEN = 0x13;
    private final int SCANKEY        = 0x94;
    private DecodeManager mDecodeManager = null;
    private TextView mDecodeResultEdit = null;
    private final int SCANTIMEOUT = 2000;
    long mScanAccount = 0;
    private boolean mbKeyDown = true;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final Button button = (Button) findViewById(R.id.button);
        mDecodeResultEdit = (TextView) findViewById(R.id.textView);
        button.setOnTouchListener(new Button.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                // TODO Auto-generated method stub
                final int action = event.getAction();
                switch (action) {
                    case MotionEvent.ACTION_DOWN:
                        try {
                            if (mbKeyDown) {
                                DoScan();
                                mbKeyDown = false;
                            }
                        } catch (Exception e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                        break;
                    case MotionEvent.ACTION_UP:
                        try {
                            mbKeyDown = true;
                            cancleScan();
                        } catch (Exception e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                        break;
                }
                return true;
            }
        });
    }
        private void DoScan() throws Exception {
            try {
                mDecodeManager.doDecode(SCANTIMEOUT);
            } catch (RemoteException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

    @Override
    protected void onResume() {
        super.onResume();

        if (mDecodeManager == null) {
            mDecodeManager = new DecodeManager(this ,ScanResultHandler);
        }
    }

    @Override
    protected void onPause() {
        super.onPause();

        if (mDecodeManager != null) {
            try {
                mDecodeManager.release();
                mDecodeManager = null;
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
    }

    private Handler ScanResultHandler = new Handler() {
        public void handleMessage(Message msg) {
            switch (msg.what) {
                case DecodeManager.MESSAGE_DECODER_COMPLETE:
                    String strDecodeResult = "";
                    DecodeResult decodeResult = (DecodeResult) msg.obj;
                    strDecodeResult = "Decode Result::"+ decodeResult.barcodeData;

                    mDecodeResultEdit.setText(strDecodeResult);
                    break;

                case DecodeManager.MESSAGE_DECODER_FAIL:
                    mDecodeResultEdit.setText("FAILED");
                    break;

                case DecodeManager.MESSAGE_DECODER_READY:
                {
                    try {
                        SymbologyConfigCode39 code39 = new SymbologyConfigCode39();
                        code39.enableCheckEnable(false);
                        code39.enableSymbology(false);
                        code39.setMaxLength(48);
                        code39.setMinLength(2);

                        SymbologyConfigs symconfig = new SymbologyConfigs();

                        symconfig.addSymbologyConfig(code39);
                        mDecodeManager.setSymbologyConfigs(symconfig);

                    } catch (RemoteException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
                    break;

                default:
                    super.handleMessage(msg);
                    break;
            }
        }
    };

    private void cancleScan() throws Exception {
        mDecodeManager.cancelDecode();
    }
}

On WinDev I created a GLOBAL JAVA PROCEDURE and I generated the application, importing the honeywell library, but I don't understand how to implement the android native functions. How can I do this?

Thank you so much!

Marco
  • 31
  • 6

1 Answers1

0

First add a Global Procedure set to your project and then in this set create an empty Global procedure.

Once the procedure is created on its header bar click on the letters WL and it will convert to JAVA code mode. Now paste you JAVA code!

HTH

Yogi Yang

Yogi Yang 007
  • 5,147
  • 10
  • 56
  • 77