public void OnPreviewFrame(byte [] bytes, Camera camera) { try { var luminance = new YUVLuminanceSource((sbyte[])(Array)bytes, width, height, 0, 0, width, height); var binarized = new BinaryBitmap(new HybridBinarizer(luminance)); var result = reader.decodeWithState(binarized); // an exception would be thrown before this point if the QR code was not detected if (string.IsNullOrEmpty(result.Text)) { return; } //ShutdownCamera (); activity.OnQrScan(result); } catch (ReaderException) { // ignore this exception; it happens every time there is a failed scan } catch (Exception e) { // TODO: this one is unexpected.. log or otherwise handle it throw; } }
public void OnPreviewFrame(byte [] bytes, Android.Hardware.Camera camera) { try { byte[] rotatedData = new byte[bytes.Length]; for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { rotatedData[x * height + height - y - 1] = bytes[x + y * width]; } } var dataRect = GetFramingRectInPreview(); var luminance = new YUVLuminanceSource((sbyte[])(Array)rotatedData, width, height, dataRect.Left, dataRect.Top, dataRect.Width(), dataRect.Height()); var binarized = new BinaryBitmap(new HybridBinarizer(luminance)); var result = reader.decodeWithState(binarized); //drawResultPoints(binarized, result); // an exception would be thrown before this point if the QR code was not detected if (string.IsNullOrEmpty(result.Text)) { return; } Android.Util.Log.Debug("AEGISSHIELD", "Barcode Found: " + result.Text); //ShutdownCamera (); ShutdownCamera(); activity.OnScan(result); } catch (ReaderException) { Android.Util.Log.Debug("AEGISSHIELD", "No barcode Found"); // ignore this exception; it happens every time there is a failed scan } catch (Exception) { // TODO: this one is unexpected.. log or otherwise handle it throw; } }