private void OnNavigated(object sender, NavigationEventArgs e)
        {
            if (!(e.Content is Pdf417ScannerPage))
            {
                return;
            }

            var phoneApplicationFrame = Application.Current.RootVisual as PhoneApplicationFrame;

            if (phoneApplicationFrame != null)
            {
                phoneApplicationFrame.Navigated -= this.OnNavigated;
            }

            var pdf417Scanner = (Pdf417ScannerPage)e.Content;

            if (pdf417Scanner != null)
            {
                pdf417Scanner.OnComplete += pdf417Scanner_OnComplete;
                pdf417Scanner.OnFailure  += pdf417Scanner_OnFailure;
                pdf417Scanner.OnCancel   += pdf417Scanner_OnCancel;
            }
            else
            {
                DispatchCommandResult(Pdf417ScannerResult.CancelResult());
            }
        }
        public static PluginResult CancelResult()
        {
            PluginResult        result    = new PluginResult(PluginResult.Status.OK);
            Pdf417ScannerResult resultMsg = new Pdf417ScannerResult();

            resultMsg.cancelled = true;
            result.Message      = JsonHelper.Serialize(resultMsg);
            return(result);
        }
        void pdf417Scanner_OnComplete(IList <IRecognitionResult> resultList)
        {
            Pdf417ScannerResult pluginResult = new Pdf417ScannerResult();

            pluginResult.cancelled  = false;
            pluginResult.resultList = new List <Pdf417ScannerBaseResult>();
            foreach (var recognitionResult in resultList)
            {
                if (recognitionResult.Valid && !recognitionResult.Empty)
                {
                    if (recognitionResult is PDF417RecognitionResult)
                    {
                        PDF417RecognitionResult    pdf417Result  = (PDF417RecognitionResult)recognitionResult;
                        Pdf417ScannerBarcodeResult barcodeResult = new Pdf417ScannerBarcodeResult();
                        barcodeResult.type = "PDF417";
                        barcodeResult.data = pdf417Result.StringData;
                        byte[] rawData = pdf417Result.RawData.GetAllData();
                        barcodeResult.raw = ByteArrayToHex(rawData);
                        pluginResult.resultList.Add(barcodeResult);
                    }
                    else if (recognitionResult is ZXingRecognitionResult)
                    {
                        ZXingRecognitionResult     zxingResult   = (ZXingRecognitionResult)recognitionResult;
                        Pdf417ScannerBarcodeResult barcodeResult = new Pdf417ScannerBarcodeResult();
                        barcodeResult.type = zxingResult.BarcodeTypeString;
                        barcodeResult.data = zxingResult.StringData;
                        pluginResult.resultList.Add(barcodeResult);
                    }
                    else if (recognitionResult is BarDecoderRecognitionResult)
                    {
                        BarDecoderRecognitionResult bcodeResult   = (BarDecoderRecognitionResult)recognitionResult;
                        Pdf417ScannerBarcodeResult  barcodeResult = new Pdf417ScannerBarcodeResult();
                        barcodeResult.type = bcodeResult.BarcodeTypeString;
                        barcodeResult.data = bcodeResult.StringData;
                        pluginResult.resultList.Add(barcodeResult);
                    }
                    else if (recognitionResult is USDLRecognitionResult)
                    {
                        USDLRecognitionResult   uResult    = (USDLRecognitionResult)recognitionResult;
                        Pdf417ScannerUSDLResult usdlResult = new Pdf417ScannerUSDLResult();
                        usdlResult.fields = new Dictionary <string, string>();
                        foreach (string key in uResult.Elements.Keys)
                        {
                            if (uResult.Elements[key] is string)
                            {
                                usdlResult.fields.Add(key, (string)uResult.Elements[key]);
                            }
                        }
                        pluginResult.resultList.Add(usdlResult);
                    }
                }
            }
            // dispatct JSON result
            string json = pluginResult.GetJSON();

            DispatchCommandResult(new PluginResult(PluginResult.Status.OK, json));
        }
 public static PluginResult CancelResult()
 {
     PluginResult result = new PluginResult(PluginResult.Status.OK);
     Pdf417ScannerResult resultMsg = new Pdf417ScannerResult();
     resultMsg.cancelled = true;
     result.Message = JsonHelper.Serialize(resultMsg);
     return result;
 }
 void pdf417Scanner_OnComplete(IList<IRecognitionResult> resultList)
 {
     Pdf417ScannerResult pluginResult = new Pdf417ScannerResult();
     pluginResult.cancelled = false;
     pluginResult.resultList = new List<Pdf417ScannerBaseResult>();
     foreach (var recognitionResult in resultList) {
         if (recognitionResult.Valid && !recognitionResult.Empty) {
             if (recognitionResult is PDF417RecognitionResult) {
                 PDF417RecognitionResult pdf417Result = (PDF417RecognitionResult)recognitionResult;
                 Pdf417ScannerBarcodeResult barcodeResult = new Pdf417ScannerBarcodeResult();
                 barcodeResult.type = "PDF417";
                 barcodeResult.data = pdf417Result.StringData;
                 byte[] rawData = pdf417Result.RawData.GetAllData();
                 barcodeResult.raw = ByteArrayToHex(rawData);
                 pluginResult.resultList.Add(barcodeResult);
             } else if (recognitionResult is ZXingRecognitionResult) {
                 ZXingRecognitionResult zxingResult = (ZXingRecognitionResult)recognitionResult;
                 Pdf417ScannerBarcodeResult barcodeResult = new Pdf417ScannerBarcodeResult();
                 barcodeResult.type = zxingResult.BarcodeTypeString;
                 barcodeResult.data = zxingResult.StringData;
                 pluginResult.resultList.Add(barcodeResult);
             } else if (recognitionResult is BarDecoderRecognitionResult) {
                 BarDecoderRecognitionResult bcodeResult = (BarDecoderRecognitionResult)recognitionResult;
                 Pdf417ScannerBarcodeResult barcodeResult = new Pdf417ScannerBarcodeResult();
                 barcodeResult.type = bcodeResult.BarcodeTypeString;
                 barcodeResult.data = bcodeResult.StringData;
                 pluginResult.resultList.Add(barcodeResult);
             } else if (recognitionResult is USDLRecognitionResult) {
                 USDLRecognitionResult uResult = (USDLRecognitionResult)recognitionResult;
                 Pdf417ScannerUSDLResult usdlResult = new Pdf417ScannerUSDLResult();
                 usdlResult.fields = new Dictionary<string,string>();
                 foreach (string key in uResult.Elements.Keys) {
                     if (uResult.Elements[key] is string) {
                         usdlResult.fields.Add(key, (string)uResult.Elements[key]);
                     }
                 }
                 pluginResult.resultList.Add(usdlResult);
             }
         }
     }
     // dispatct JSON result
     string json = pluginResult.GetJSON();
     DispatchCommandResult(new PluginResult(PluginResult.Status.OK, json));
 }
 void pdf417Scanner_OnCancel()
 {
     DispatchCommandResult(Pdf417ScannerResult.CancelResult());
 }