From a7adf98ff4ac801342853b1f9231cc1ab5acebf3 Mon Sep 17 00:00:00 2001
From: gxc <guoxuecheng@guoxuechengdeMacBook-Pro.local>
Date: 星期四, 14 十一月 2019 17:25:42 +0800
Subject: [PATCH] Merge branch 'dev-tzy' into DEV_GXC

---
 ZigbeeApp/GateWay.Droid/Application.cs |   60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 59 insertions(+), 1 deletions(-)

diff --git a/ZigbeeApp/GateWay.Droid/Application.cs b/ZigbeeApp/GateWay.Droid/Application.cs
index 650397c..0d0d9af 100644
--- a/ZigbeeApp/GateWay.Droid/Application.cs
+++ b/ZigbeeApp/GateWay.Droid/Application.cs
@@ -15,7 +15,9 @@
 using Microsoft.AppCenter.Analytics;
 using Microsoft.AppCenter.Crashes;
 using Com.Tencent.MM.Sdk.Openapi;
-
+using ZXing.Mobile;
+using System.IO;
+
 namespace com.hdl.home
 {
 
@@ -270,3 +272,59 @@
         }
     }
 }
+
+namespace Shared
+{
+    public static class QRCode
+    {
+        static ZXing.Mobile.MobileBarcodeScanner scanner;
+        public static void ScanQRcode(Action<string> action)
+        {
+            ((BaseActivity)Shared.Application.Activity).SetCamera(async (obj) => {
+                if (obj)
+                {
+                    if (scanner == null)
+                    {
+                        MobileBarcodeScanner.Initialize(Shared.Application.Activity.Application);
+                        scanner = new ZXing.Mobile.MobileBarcodeScanner();
+                    }
+
+                    var result = await scanner.Scan();
+
+                    if (result != null)
+                        action?.Invoke(result.Text);
+                    else
+                        action?.Invoke(null);
+
+                }
+                else
+                {
+                    action?.Invoke(null);
+                }
+            });
+        }
+
+        public static byte[] BytesFromText(string text, int width = 300, int height = 300)
+        {
+            var barcodeWriter = new ZXing.Mobile.BarcodeWriter
+            {
+                Format = ZXing.BarcodeFormat.QR_CODE,
+                Options = new ZXing.Common.EncodingOptions
+                {
+                    Width = width,
+                    Height = height,
+                    Margin = 0
+                }
+            };
+
+            barcodeWriter.Renderer = new ZXing.Mobile.BitmapRenderer();
+            var bitmap = barcodeWriter.Write(text);
+            using (var stream = new MemoryStream())
+            {
+                bitmap.Compress(Android.Graphics.Bitmap.CompressFormat.Png, 100, stream);  // this is the diff between iOS and Android
+                stream.Position = 0;
+                return stream.ToArray();
+            }
+        }
+    }
+}

--
Gitblit v1.8.0