首页 > 解决方案 > Zebra TC26 扫描仪在代码中更改配置时不扫描 - Xamarin

问题描述

我有一个来自 Zebra 的 TC26,内置的扫描仪在我的 Xamarin 应用程序中运行良好。现在我想更改我的应用程序启动时的一些设置。我按照本教程进行操作:https ://techdocs.zebra.com/emdk-for-xamarin/7-0/tutorial/barcodeapitutorial/ 但是一旦执行此行:

barcodeManager = (BarcodeManager)emdkManager.GetInstance(EMDKManager.FEATURE_TYPE.Barcode);

扫描仪不再工作。如果我按下扫描仪按钮,没有任何反应。我究竟做错了什么?

我的代码:MainActivity.cs

    protected override void OnCreate(Bundle savedInstanceState)
    {
        TabLayoutResource = Resource.Layout.Tabbar;
        ToolbarResource = Resource.Layout.Toolbar;
        
        base.OnCreate(savedInstanceState);

        Xamarin.Essentials.Platform.Init(this, savedInstanceState);
        global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
        
        EMDKResults results = EMDKManager.GetEMDKManager(Application.Context, this);
        
        LoadApplication(new App(Android.OS.Environment.ExternalStorageDirectory.AbsolutePath));
        
    }

public void OnClosed()
    {
        // This callback will be issued when the EMDK closes unexpectedly.

        if (emdkManager != null)
        {
            emdkManager.Release();
            emdkManager = null;
        }

    }
    protected override void OnResume()
    {
        base.OnResume();
        InitScanner();
    }


    protected override void OnPause()
    {
        base.OnPause();
        DeinitScanner();
    }
    public void OnOpened(EMDKManager emdkManagerInstance)
    {
        this.emdkManager = emdkManagerInstance;
        InitScanner();
    }
    private void InitScanner()
    {
        if (emdkManager != null)
        {
            if (barcodeManager == null)
            {
                try
                {

                    //Get the feature object such as BarcodeManager object for accessing the feature.
                    barcodeManager = (BarcodeManager)emdkManager.GetInstance(EMDKManager.FEATURE_TYPE.Barcode);
                    scanner = barcodeManager.GetDevice(BarcodeManager.DeviceIdentifier.Default);

                    if (scanner != null)
                    {
                        try
                        {
                            scanner.Enable();
                        }
                        catch(Exception ex)
                        {
                            Console.WriteLine(ex.Message);
                        }
                        //EMDK: Configure the scanner settings
                        ScannerConfig config = scanner.GetConfig();
                        config.DecoderParams.Code39.Enabled = true;
                        config.DecoderParams.Code128.Enabled = true;
                        config.DecoderParams.I2of5.Enabled = true;
                        scanner.SetConfig(config);
                    }
                }
                catch (ScannerException e)
                {
                    
                }
                catch (Exception ex)
                {
                    
                }
            }
        }
    }
    void DeinitScanner()
    {
        if (emdkManager != null)
        {

            if (scanner != null)
            {
                try
                {
                    scanner.Disable();
                }
                catch (ScannerException e)
                {
                    
                }
            }
            if (barcodeManager != null)
            {
                emdkManager.Release(EMDKManager.FEATURE_TYPE.Barcode);
            }
            barcodeManager = null;
            scanner = null;
        }
    }

标签: xamarinxamarin.formsxamarin.androidbarcode-scanner

解决方案


推荐阅读