public void OnPreviewFrame(byte[] data, Android.Hardware.Camera camera) { try { System.Console.WriteLine("start create Image"); yuvImage = new YuvImage(data, ImageFormatType.Nv21, previewWidth, previewHeight, null); stride = yuvImage.GetStrides(); try { if (isReady) { if (backgroundHandler != null) { isReady = false; Message msg = new Message(); msg.What = 100; msg.Obj = yuvImage; backgroundHandler.SendMessage(msg); } } } catch (BarcodeReaderException e) { e.PrintStackTrace(); } } catch (System.IO.IOException) { } }
public void OnPreviewFrame(byte[] data, Android.Hardware.Camera camera) { try { yuvImage = new YuvImage(data, ImageFormatType.Nv21, previewWidth, previewHeight, null); stride = yuvImage.GetStrides(); try { if (isReady) { if (backgroundHandler != null) { isReady = false; Message msg = new Message(); msg.What = 100; msg.Obj = yuvImage; backgroundHandler.SendMessage(msg); backgroundHandler.Post(() => { //tvResult.Text = result; }); } } } catch (BarcodeReaderException e) { e.PrintStackTrace(); } } catch (System.IO.IOException) { } }
public override void HandleMessage(Message msg) { if (msg.What == 100) { Message msg1 = new Message(); msg1.What = 200; msg1.Obj = ""; try { YuvImage image = (YuvImage)msg.Obj; if (image != null) { int[] stridelist = image.GetStrides(); TextResult[] text = barcodeReader.DecodeBuffer(image.GetYuvData(), previewWidth, previewHeight, stridelist[0], EnumImagePixelFormat.IpfNv21, ""); if (text != null && text.Length > 0) { for (int i = 0; i < text.Length; i++) { if (i == 0) { msg1.Obj = "Code[1]: " + text[0].BarcodeText; } else { msg1.Obj = msg1.Obj + "\n\n" + "Code[" + (i + 1) + "]: " + text[i].BarcodeText; } } } } } catch (BarcodeReaderException e) { msg1.Obj = ""; e.PrintStackTrace(); } isReady = true; myHandler.SendMessage(msg1); } else if (msg.What == 200) { tv_text.Text = msg.Obj.ToString(); //System.Console.WriteLine("end update UI"); } }