外部条形码扫描仪的应用程序(使用USB端口)

时间:2019-05-23 03:54:33

标签: java xamarin.forms xamarin.android barcode-scanner bindings-library

更新:提供了有关提供的Java类的新错误enter image description here 我有一个使用Java +提供的Jar库为外部条形码扫描仪(使用USB端口)构建应用程序的教程。我正在尝试使用Xamarin.Forms和那个Jar库(通过BindingsLibrary Project)来构建相同的应用程序。但是,我遇到了一个错误  编译代码时出现“ Java.Lang.NoClassDefFoundError:”。有人知道我在做什么错吗?

这是我的java类: USBScanFactory

     package com.unistrong.qrcode;

      import com.unistrong.pin.GOPOManager;

   public class USBQRscanFactory {
    private static USBQRscanFactory factory = new USBQRscanFactory();
    static boolean mIsScanContinue = false;
    private GOPOManager mGopoManager = GOPOManager.getInstance();
    private OnScanListener mScanListener;
    private QRScanManagerJNI qrScanManagerJNI;

    private USBQRscanFactory() {
    }

    public static USBQRscanFactory createInstance() {
        return factory;
    }

    public void init(OnScanListener onScanListener) {
        this.mGopoManager.Pin11_High();
        this.qrScanManagerJNI = new QRScanManagerJNI(onScanListener);
        this.qrScanManagerJNI.callbackInit();
    }

    public void enableAddKeyValue(int i) {
        QRScanManagerJNI.AddKeyValue(i);
    }

    public void open() {
        this.mGopoManager.Pin11_Low();
        try {
            Thread.sleep(500);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        QRScanManagerJNI.OpenDev();
    }

    public void powerOn() {
        this.mGopoManager.Pin11_High();
        this.mGopoManager.openPower5V_3V3();
        try {
            Thread.sleep(500);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

    public void powerOff() {
        this.mGopoManager.Pin11_High();
        this.mGopoManager.closePower5V_3V3();
    }

    public void scan_start() {
        QRScanManagerJNI.QRScan();
    }

在ScanListener上:

package com.unistrong.qrcode;

public interface OnScanListener {
    void scanReport(byte[] bArr);

    void statusReport(int i);
}

这是我在Xamain上的代码:

 public class OnScanListener : Java.Lang.Object, IOnScanListener
        {

            H myH = new H();
            public void ScanReport(byte[] byteArray)
            {
                lock (myH)
                {
                    if (null != byteArray && byteArray.Length > 0)
                    {
                        myH.SendMessage(myH.ObtainMessage(0, byteArray));
                    }
                }
            }

            public void StatusReport(int i)
            {
                lock (myH)
                {
                    myH.SendEmptyMessage(i);
                }

            }


        }

        #endregion
        public MainPage()
        {
            usbScan = USBQRscanFactory.CreateInstance();


            InitializeComponent();

        }







        int count = 0;
        private void scanBtn_Clicked(object sender, EventArgs e)
        {
            count++;
            //usbScan.Init(OnScanListener);
            OnScanListener myOnScanListener = new OnScanListener();
            usbScan.PowerOn();
            usbScan.Init(myOnScanListener);
            Barcode.Text = "";

            openScanner(true);
            usbScan.Scan_start();
        }



        //Open Scanner
        private void openScanner(bool open)
        {
            if (open == mWorkingStateFlag) return;
            if (open)
            {
                try
                {
                    Java.Lang.Thread.Sleep(50);
                    usbScan.Open();
                    usbScan.EnableAddKeyValue(0);
                }
                catch (Java.Lang.InterruptedException e)
                {
                    // TODO Auto-generated catch block
                    e.PrintStackTrace();
                }
            }

        }

0 个答案:

没有答案