/// <summary> /// Sets the AddBarcodeDeviceListener for device connection status. /// </summary> /// <param name="context">This parameter needs to be a type of Android.Content.Context. /// It can be an activity or application context.</param> private void SetBarcodeDeviceListener(object context) { if (sBarcodeDeviceEventHandler != null) { return; } Task.Run(() => { lock (mProfileFixLock) { lock (mOpenLock) { using var barcodeReaderManager = BarcodeReaderManager.Create((Context)context); if (mAidcManager == null) { mAidcManager = barcodeReaderManager.Init(); } } sBarcodeDeviceEventHandler = new BarcodeDeviceEventHandler(this); mAidcManager.AddBarcodeDeviceListener(sBarcodeDeviceEventHandler); } }); }
private Result OpenReader(string scannerName, Context context) { var result = new Result(Result.Codes.SUCCESS, "Reader successfully claimed."); if (!mReaderOpened) { try { if (mAidcBarcodeReader == null) { lock (mOpenLock) { var manager = BarcodeReaderManager.Create(context); if (manager != null) { mAidcManager = manager.Init(); mAidcBarcodeReader = mAidcManager.CreateBarcodeReader(scannerName); try { mAidcBarcodeReader.SetProperty("TRIG_CONTROL_MODE", "autoControl"); } catch (Com.Honeywell.Aidc.UnsupportedPropertyException) { result.Code = Result.Codes.INTERNAL_ERROR; result.Message = "Failed to set trigger control mode."; } if (result.Code == Result.Codes.SUCCESS) { mBarcodeEventHandler = new BarcodeEventHandler(this); mAidcBarcodeReader.AddBarcodeListener(mBarcodeEventHandler); } } else { result.Code = Result.Codes.INTERNAL_ERROR; result.Message = "Manager has been disposed."; } } } if (result.Code == Result.Codes.SUCCESS) { try { mAidcBarcodeReader.Claim(); mReaderOpened = true; BarcodeReaderProfileHandler.Instance.LoadProfileOccurred += LoadProfileOccurred; } catch (Com.Honeywell.Aidc.ScannerUnavailableException) { result.Code = Result.Codes.INTERNAL_ERROR; result.Message = "Reader is not available."; } } } catch (Java.Lang.Exception ex) { result.Code = Result.Codes.EXCEPTION; result.Message = ex.Message; } catch (Exception ex) { result.Code = Result.Codes.EXCEPTION; result.Message = ex.Message; } } else { result.Code = Result.Codes.READER_ALREADY_OPENED; result.Message = "Reader was already opened."; } return(result); }