From 25429f085093d89d543a0b90e30d0d62d1b7dac9 Mon Sep 17 00:00:00 2001
From: hxb <hxb@hdlchina.com.cn>
Date: 星期二, 30 八月 2022 09:37:38 +0800
Subject: [PATCH] 合并了IOS的代码

---
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlWifiLogic.cs |  936 ++++++++++++++++++++++++++++++++++++----------------------
 1 files changed, 576 insertions(+), 360 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlWifiLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlWifiLogic.cs
old mode 100755
new mode 100644
index b73cdc7..cde9b36
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlWifiLogic.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlWifiLogic.cs
@@ -1,360 +1,576 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Security.Cryptography;
-using System.Text;
-
-namespace Shared.Phone.UserCenter
-{
-    /// <summary>
-    /// WiFi鐨勯�昏緫
-    /// </summary>
-    public class HdlWifiLogic
-    {
-        #region 鈻� 鍙橀噺澹版槑___________________________
-
-        /// <summary>
-        /// WiFi鐨勯�昏緫
-        /// </summary>
-        private static HdlWifiLogic m_Current = null;
-        /// <summary>
-        /// WiFi鐨勯�昏緫
-        /// </summary>
-        public static HdlWifiLogic Current
-        {
-            get
-            {
-                if (m_Current == null)
-                {
-                    m_Current = new HdlWifiLogic();
-                }
-                return m_Current;
-            }
-        }
-
-        /// <summary>
-        /// 褰撳墠Wifi鐨処p鍦板潃
-        /// </summary>
-        public string IpAddress
-        {
-            get
-            {
-                var temp = new Shared.Net.NetWiFi();
-                return temp.GetIPAddress();
-            }
-        }
-
-        /// <summary>
-        /// 褰撳墠鏄惁鏄綉鍏崇儹鐐�
-        /// </summary>
-        public bool IsGatewayHotspot
-        {
-            get
-            {
-                string myId = this.SSID;
-
-                if (myId.StartsWith("hdlZigbeeGW") == true)
-                {
-                    return true;
-                }
-                return false;
-            }
-        }
-
-        /// <summary>
-        /// 褰撳墠wifi鐨凷SID,涔熷彨Wifi鐨勫悕瀛�(鍙栦笉鍒版椂,浼氳繑鍥瀗ull)
-        /// </summary>
-        public string SSID
-        {
-            get
-            {
-#if iOS
-                return string.Empty;
-#endif
-#if Android
-                string ssiD = null;
-                HdlThreadLogic.Current.RunThread(() =>
-                {
-                    Shared.Net.NetWiFi.GetWIFISSID((strId) =>
-                    {
-                        ssiD = strId;
-                    });
-                });
-                int count = 0;
-                while (ssiD == null)
-                {
-                    System.Threading.Thread.Sleep(50);
-                    count++;
-                    if (count == 20)
-                    {
-                        //1绉掕秴鏃�
-                        return null;
-                    }
-                }
-                if (string.IsNullOrEmpty(ssiD) == false && ssiD.StartsWith("\"") && ssiD.EndsWith("\""))
-                {
-                    ssiD = ssiD.Substring(1, ssiD.Length - 2);
-                }
-                return ssiD;
-#endif
-            }
-        }
-#if Android
-        /// <summary>
-        /// 瀹氫箟鍏ㄥ眬鍙橀噺
-        /// </summary>
-        private Com.Mediatek.Elian.ElianNative hdlWiFi = null;
-#endif
-
-        /// <summary>
-        /// TCP鍗忚
-        /// </summary>
-        private System.Net.Sockets.TcpClient tcpClient = null;
-        /// <summary>
-        /// 閾炬帴娴佸璞�
-        /// </summary>
-        private System.Net.Sockets.NetworkStream networkStream = null;
-        /// <summary>
-        /// Ap妯″紡缃戝叧杩斿洖鐨勭閽�
-        /// </summary>
-        private string randDesKey = null;
-
-        #endregion
-
-        #region 鈻� Ap妯″紡鐨凾CP閾炬帴____________________
-
-        /// <summary>
-        /// 鎵撳紑Ap妯″紡鐨凾CP閾炬帴(鏈夐敊璇椂锛岀洿鎺ヨ繑鍥為敊璇秷鎭�傛病鏈夐敊璇椂锛岃繑鍥瀗ull)
-        /// </summary>
-        /// <returns></returns>
-        public string StartApTcpConnection()
-        {
-            try
-            {
-                //TCP杩炴帴
-                tcpClient = new System.Net.Sockets.TcpClient();
-                tcpClient.Connect("192.168.8.1", 5000);
-                networkStream = tcpClient.GetStream();
-                //鍔犲瘑鏁版嵁
-                string sendDataMsg = "hdl1985.";
-                string DefaultdesKey = "hdl1985.";
-                //44bytes 鍔犲瘑鏁版嵁 DES鍔犲瘑 base64瀵嗘枃
-                var sendData = Encoding.UTF8.GetBytes(DesEncrypt(sendDataMsg, DefaultdesKey));
-                //灏嗘暟鎹啓鍏ョ綉缁滄祦
-                networkStream.Write(sendData, 0, sendData.Length);
-
-                System.Threading.Thread.Sleep(500);
-                //2.鎺ユ敹鐘舵��,闀垮害<1024瀛楄妭
-                byte[] bytes = new Byte[1024];
-                int length = networkStream.Read(bytes, 0, bytes.Length);
-                if (length == 0)
-                {
-                    //閫氫俊閾炬帴澶辫触
-                    return Language.StringByID(R.MyInternationalizationString.uCommunicationLinkFail);
-                }
-                string data = Encoding.UTF8.GetString(bytes, 0, length);
-                //缃戝叧杩斿洖鐨勭閽�
-                this.randDesKey = DESDecrypt(data, DefaultdesKey);
-
-                return null;
-            }
-            catch (Exception ex)
-            {
-                HdlLogLogic.Current.WriteLog(ex);
-                this.CloseApTcpConnection();
-                //閫氫俊閾炬帴澶辫触
-                return Language.StringByID(R.MyInternationalizationString.uCommunicationLinkFail);
-            }
-        }
-
-        /// <summary>
-        /// Ap妯″紡 鍙戦�佸瘑鐮佸埌瀹跺涵鐨勮矾鐢卞櫒
-        /// </summary>
-        /// <param name="ssid"></param>
-        /// <param name="password"></param>
-        /// <returns></returns>
-        public bool SendApHomeWifiPassword(string ssid, string password)
-        {
-            try
-            {
-                //鍔犲瘑鏁版嵁
-                string data2 = "ssid:" + ssid + "," + "pwd:" + password;
-                var sendData2 = Encoding.UTF8.GetBytes(DesEncrypt(data2, randDesKey));
-                //灏嗘暟鎹啓鍏ョ綉缁滄祦
-                networkStream.Write(sendData2, 0, sendData2.Length);
-                return true;
-            }
-            catch (Exception ex)
-            {
-                HdlLogLogic.Current.WriteLog(ex);
-                return false;
-            }
-        }
-
-        /// <summary>
-        /// 鍏抽棴Ap妯″紡鐨則cp閾炬帴
-        /// </summary>
-        public void CloseApTcpConnection()
-        {
-            try
-            {
-                //鍏抽棴瀹㈡埛绔�
-                tcpClient?.Close();
-                tcpClient = null;
-                networkStream = null;
-                randDesKey = null;
-            }
-            catch (Exception ex)
-            {
-                HdlLogLogic.Current.WriteLog(ex);
-            }
-        }
-
-        #endregion
-
-        #region 鈻� 鍔犲瘑瑙e瘑___________________________
-
-        /// <summary>
-        /// //鍔犲瘑鏁版嵁
-        /// </summary>
-        /// <param name="pToDesEncrypt"></param>
-        /// <param name="sKey">DES绉橀挜</param>
-        /// <returns></returns>
-        private string DesEncrypt(string pToDesEncrypt, string sKey)
-        {
-            // 鍒涘缓des鍔犲瘑娌�
-            using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
-            {
-                // 寰楀埌UTF-8鐨勬暟鎹簮
-                byte[] inputByteArray = Encoding.UTF8.GetBytes(pToDesEncrypt);
-                // 璁剧疆key鍜宨v瀵嗛挜
-                des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
-                des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
-                //鐢变簬java鏄娇鐢ㄩ粯璁ゅ姞瀵嗘ā寮忥紝C#榛樿鏄疌BC锛岄渶瑕佷慨鏀逛负ECB
-                des.Mode = CipherMode.CBC;
-                des.Padding = PaddingMode.PKCS7;
-                // 鍒涘缓鏁版嵁娴佸苟杩涜鍔犲瘑
-                var ms = new System.IO.MemoryStream();
-                using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write))
-                {
-                    cs.Write(inputByteArray, 0, inputByteArray.Length);
-                    cs.FlushFinalBlock();
-                    cs.Close();
-                }
-                // 鍏抽棴鏁版嵁娴�
-                ms.Close();
-                return Convert.ToBase64String(ms.ToArray());//base64瀵嗘枃
-            }
-        }
-
-        /// <summary>
-        /// 瑙e瘑
-        /// </summary>
-        /// <param name="pToDecrypt"></param>
-        /// <param name="key">瑙e瘑瀵嗗寵</param>
-        /// <returns></returns>
-        private string DESDecrypt(string pToDecrypt, string key = null)
-        {
-            byte[] inputByteArray = Convert.FromBase64String(pToDecrypt);
-            using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
-            {
-
-                des.Key = ASCIIEncoding.ASCII.GetBytes(key);
-                des.IV = ASCIIEncoding.ASCII.GetBytes(key);
-
-                var ms = new System.IO.MemoryStream();
-                using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write))
-                {
-                    cs.Write(inputByteArray, 0, inputByteArray.Length);
-                    cs.FlushFinalBlock();
-                    cs.Close();
-                }
-                string str = Encoding.UTF8.GetString(ms.ToArray());
-                ms.Close();
-                return str;
-            }
-        }
-
-        #endregion
-
-        #region 鈻� 涓�鑸柟娉昣__________________________
-
-#if Android
-        /// <summary>
-        /// 寮�濮媁i-Fi閰嶇綉
-        /// </summary>
-        /// <param name="wifiName">wifi鍚嶅瓧</param>
-        /// <param name="wifiPsw">wifi瀵嗙爜</param>
-        /// <param name="p2">鎴戜篃涓嶇煡閬撹繖涓槸浠�涔堜笢瑗�</param>
-        /// <returns></returns>
-        public bool StartSmartConnection(string wifiName, string wifiPsw, string p2 = "1")
-        {
-            if (hdlWiFi == null)
-            {
-                Com.Mediatek.Elian.ElianNative.LoadLib();
-                //鍒濆鍖朩i-Fi閰嶇綉
-                this.hdlWiFi = new Com.Mediatek.Elian.ElianNative();
-                hdlWiFi.InitSmartConnection(null, 1, 1);
-            }
-            //寮�濮媁i-Fi閰嶇綉
-            var result = hdlWiFi.StartSmartConnection(wifiName, wifiPsw, p2);
-            return true;
-        }
-
-        /// <summary>
-        /// 鍋滄Wi-Fi閰嶇綉
-        /// </summary>
-        public void StopSmartConnection()
-        {
-            if (hdlWiFi != null)
-            {
-                //鍋滄Wi-Fi閰嶇綉
-                hdlWiFi.StopSmartConnection();
-            }
-        }
-#endif
-#if iOS
-        /// <summary>
-        /// 寮�濮媁i-Fi閰嶇綉
-        /// </summary>
-        /// <param name="wifiName">wifi鍚嶅瓧</param>
-        /// <param name="wifiPsw">wifi瀵嗙爜</param>
-        /// <param name="p2">鎴戜篃涓嶇煡閬撹繖涓槸浠�涔堜笢瑗�</param>
-        /// <returns></returns>
-        public bool StartSmartConnection(string wifiName, string wifiPsw, string p2 = "1")
-        {
-            //鍒濆鍖朩i-Fi杩炴帴
-            Com.Mediatek.Elian.ElianNative.InitSmartConnection(null, 1, 1);
-            //寮�濮媁i-Fi杩炴帴
-            var result = Com.Mediatek.Elian.ElianNative.StartSmartConnection(wifiName, wifiPsw, p2);
-            return true;
-        }
-
-        /// <summary>
-        /// 鍋滄Wi-Fi閰嶇綉
-        /// </summary>
-        public void StopSmartConnection()
-        {
-            //鍋滄Wi-Fi閰嶇綉
-            Com.Mediatek.Elian.ElianNative.StopSmartConnection();
-        }
-#endif
-
-        /// <summary>
-        /// 鎵撳紑鎵嬫満wifi璁剧疆鐣岄潰
-        /// </summary>
-        public void OpenAppWifiSettion()
-        {
-            if (Application.DeviceType == Shared.Device.Android)
-            {
-                ///鎵撳紑WI-IF鐣岄潰
-                CommonClass.OpenAction("android.settings.WIFI_SETTINGS");
-            }
-            else
-            {
-                CommonClass.OpenAction("App-Prefs:root=WIFI");
-            }
-        }
-
-        #endregion
-    }
-}
+锘縰sing System;
+using System.Collections.Generic;
+using System.Security.Cryptography;
+using System.Text;
+
+namespace Shared.Phone.UserCenter
+{
+    /// <summary>
+    /// WiFi鐨勯�昏緫
+    /// </summary>
+    public class HdlWifiLogic
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        /// <summary>
+        /// WiFi鐨勯�昏緫
+        /// </summary>
+        private static HdlWifiLogic m_Current = null;
+        /// <summary>
+        /// WiFi鐨勯�昏緫
+        /// </summary>
+        public static HdlWifiLogic Current
+        {
+            get
+            {
+                if (m_Current == null)
+                {
+                    m_Current = new HdlWifiLogic();
+                }
+                return m_Current;
+            }
+        }
+
+        /// <summary>
+        /// 褰撳墠鏄惁鏄綉鍏崇儹鐐�
+        /// </summary>
+        public bool IsGatewayHotspot
+        {
+            get
+            {
+                //string myId = this.SSID;
+
+                //if (myId != null && myId.StartsWith("hdlZigbeeGW") == true)
+                //{
+                //    return true;
+                //}
+                //2021.03.22 涓汉鍐冲畾,涓嶅啀妫�娴嬭繖涓笢瑗�
+                return true;
+            }
+        }
+
+        /// <summary>
+        /// 褰撳墠鏄惁鏄疢ini缃戝叧鐑偣
+        /// </summary>
+        public bool IsMiniGatewayHotspot
+        {
+            get
+            {
+                //string myId = this.SSID;
+
+                //if (myId != null && myId.StartsWith("hdlZigbeeGW-") == true)
+                //{
+                //    return true;
+                //}
+                //2021.03.22 涓汉鍐冲畾,涓嶅啀妫�娴嬭繖涓笢瑗�
+                return true;
+            }
+        }
+
+        /// <summary>
+        /// 褰撳墠wifi鐨凷SID,涔熷彨Wifi鐨勫悕瀛�(鍙栦笉鍒版椂,浼氳繑鍥瀗ull)
+        /// </summary>
+        public string SSID
+        {
+            get
+            {
+#if iOS
+                string ssiD = Shared.WiimuUPnP.SSID;
+                if (string.IsNullOrEmpty(ssiD) == false && ssiD.StartsWith("\"") && ssiD.EndsWith("\""))
+                {
+                    ssiD = ssiD.Substring(1, ssiD.Length - 2);
+                }
+                return ssiD;
+#endif
+#if Android
+                string ssiD = null;
+                HdlThreadLogic.Current.RunThread(() =>
+                {
+                    Shared.Net.NetWiFi.GetWIFISSID((strId) =>
+                    {
+                        ssiD = strId;
+                    });
+                });
+                int count = 0;
+                while (ssiD == null)
+                {
+                    System.Threading.Thread.Sleep(50);
+                    count++;
+                    if (count == 20)
+                    {
+                        //1绉掕秴鏃�
+                        return null;
+                    }
+                }
+                if (string.IsNullOrEmpty(ssiD) == false && ssiD.StartsWith("\"") && ssiD.EndsWith("\""))
+                {
+                    ssiD = ssiD.Substring(1, ssiD.Length - 2);
+                }
+                return ssiD;
+#endif
+            }
+        }
+#if Android
+        /// <summary>
+        /// 瀹氫箟鍏ㄥ眬鍙橀噺
+        /// </summary>
+        private Com.Mediatek.Elian.ElianNative hdlWiFi = null;
+#endif
+        /// <summary>
+        /// TCP鍗忚
+        /// </summary>
+        private System.Net.Sockets.TcpClient tcpClient = null;
+        /// <summary>
+        /// 閾炬帴娴佸璞�
+        /// </summary>
+        private System.Net.Sockets.NetworkStream networkStream = null;
+        /// <summary>
+        /// Ap妯″紡缃戝叧杩斿洖鐨勭閽�
+        /// </summary>
+        private string randDesKey = null;
+        /// <summary>
+        /// 鏄惁宸茬粡娣诲姞缃戠粶鍙樺寲鐩戝惉
+        /// </summary>
+        private bool hadAddListenNetWork = false;
+
+        /// <summary>
+        /// 鑳藉惁璁块棶http
+        /// </summary>
+        private bool m_CanAccessHttp = true;
+        /// <summary>
+        /// 涓婁竴娆¤闂甴ttp鐨勬椂闂�
+        /// </summary>
+        private DateTime oldAccessHttpTime = DateTime.Now;
+        /// <summary>
+        /// 鑳藉惁璁块棶http
+        /// </summary>
+        public bool CanAccessHttp
+        {
+            set
+            {
+                m_CanAccessHttp = value;
+                oldAccessHttpTime = DateTime.Now;
+            }
+            get
+            {
+                //8绉掑悗鍏佽鍐嶆璁块棶
+                if (m_CanAccessHttp == true || (DateTime.Now - oldAccessHttpTime).TotalMilliseconds > 8 * 1000)
+                {
+                    oldAccessHttpTime = DateTime.Now;
+                    return true;
+                }
+                return false;
+            }
+        }
+        /// <summary>
+        /// 鍙樻洿缃戠粶鏃剁殑浜嬩欢
+        /// </summary>
+        private string changedNetworkTime = string.Empty;
+        /// <summary>
+        /// 褰撳墠 wifi 鐨�
+        /// </summary>
+        private string oldSsid = string.Empty;
+
+        #endregion
+
+        #region 鈻� Ap妯″紡鐨凾CP閾炬帴____________________
+
+        /// <summary>
+        /// 鎵撳紑Ap妯″紡鐨凾CP閾炬帴(鏈夐敊璇椂锛岀洿鎺ヨ繑鍥為敊璇秷鎭�傛病鏈夐敊璇椂锛岃繑鍥瀗ull)
+        /// </summary>
+        /// <returns></returns>
+        public string StartApTcpConnection()
+        {
+            try
+            {
+                //TCP杩炴帴
+                tcpClient = new System.Net.Sockets.TcpClient();
+                tcpClient.Connect("192.168.8.1", 5000);
+                networkStream = tcpClient.GetStream();
+                networkStream.ReadTimeout = 1000;
+                //鍔犲瘑鏁版嵁
+                string sendDataMsg = "hdl1985.";
+                string DefaultdesKey = "hdl1985.";
+                //44bytes 鍔犲瘑鏁版嵁 DES鍔犲瘑 base64瀵嗘枃
+                var sendData = Encoding.UTF8.GetBytes(DesEncrypt(sendDataMsg, DefaultdesKey));
+                //灏嗘暟鎹啓鍏ョ綉缁滄祦
+                networkStream.Write(sendData, 0, sendData.Length);
+
+                System.Threading.Thread.Sleep(500);
+                //2.鎺ユ敹鐘舵��,闀垮害<1024瀛楄妭
+                byte[] bytes = new Byte[1024];
+                int length = networkStream.Read(bytes, 0, bytes.Length);
+                if (length == 0)
+                {
+                    //閫氫俊閾炬帴澶辫触
+                    return Language.StringByID(R.MyInternationalizationString.uCommunicationLinkFail);
+                }
+                string data = Encoding.UTF8.GetString(bytes, 0, length);
+                //缃戝叧杩斿洖鐨勭閽�
+                this.randDesKey = DESDecrypt(data, DefaultdesKey);
+
+                return null;
+            }
+            catch (Exception ex)
+            {
+                HdlLogLogic.Current.WriteLog(ex);
+                this.CloseApTcpConnection();
+                //閫氫俊閾炬帴澶辫触
+                return Language.StringByID(R.MyInternationalizationString.uCommunicationLinkFail);
+            }
+        }
+
+        /// <summary>
+        /// Ap妯″紡 鍙戦�佸瘑鐮佸埌瀹跺涵鐨勮矾鐢卞櫒
+        /// </summary>
+        /// <param name="ssid"></param>
+        /// <param name="password"></param>
+        /// <returns></returns>
+        public bool SendApHomeWifiPassword(string ssid, string password)
+        {
+            try
+            {
+                //鍔犲瘑鏁版嵁
+                string data2 = "ssid:" + ssid + "," + "pwd:" + password;
+                var sendData2 = Encoding.UTF8.GetBytes(DesEncrypt(data2, randDesKey));
+                //灏嗘暟鎹啓鍏ョ綉缁滄祦
+                networkStream.Write(sendData2, 0, sendData2.Length);
+                return true;
+            }
+            catch (Exception ex)
+            {
+                HdlLogLogic.Current.WriteLog(ex);
+                return false;
+            }
+        }
+
+        /// <summary>
+        /// 鍏抽棴Ap妯″紡鐨則cp閾炬帴
+        /// </summary>
+        public void CloseApTcpConnection()
+        {
+            try
+            {
+                //鍏抽棴瀹㈡埛绔�
+                tcpClient?.Close();
+                tcpClient = null;
+                networkStream = null;
+                randDesKey = null;
+            }
+            catch (Exception ex)
+            {
+                HdlLogLogic.Current.WriteLog(ex);
+            }
+        }
+
+        #endregion
+
+        #region 鈻� 鍔犲瘑瑙e瘑___________________________
+
+        /// <summary>
+        /// //鍔犲瘑鏁版嵁
+        /// </summary>
+        /// <param name="pToDesEncrypt"></param>
+        /// <param name="sKey">DES绉橀挜</param>
+        /// <returns></returns>
+        private string DesEncrypt(string pToDesEncrypt, string sKey)
+        {
+            // 鍒涘缓des鍔犲瘑娌�
+            using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
+            {
+                // 寰楀埌UTF-8鐨勬暟鎹簮
+                byte[] inputByteArray = Encoding.UTF8.GetBytes(pToDesEncrypt);
+                // 璁剧疆key鍜宨v瀵嗛挜
+                des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
+                des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
+                //鐢变簬java鏄娇鐢ㄩ粯璁ゅ姞瀵嗘ā寮忥紝C#榛樿鏄疌BC锛岄渶瑕佷慨鏀逛负ECB
+                des.Mode = CipherMode.CBC;
+                des.Padding = PaddingMode.PKCS7;
+                // 鍒涘缓鏁版嵁娴佸苟杩涜鍔犲瘑
+                var ms = new System.IO.MemoryStream();
+                using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write))
+                {
+                    cs.Write(inputByteArray, 0, inputByteArray.Length);
+                    cs.FlushFinalBlock();
+                    cs.Close();
+                }
+                // 鍏抽棴鏁版嵁娴�
+                ms.Close();
+                return Convert.ToBase64String(ms.ToArray());//base64瀵嗘枃
+            }
+        }
+
+        /// <summary>
+        /// 瑙e瘑
+        /// </summary>
+        /// <param name="pToDecrypt"></param>
+        /// <param name="key">瑙e瘑瀵嗗寵</param>
+        /// <returns></returns>
+        private string DESDecrypt(string pToDecrypt, string key = null)
+        {
+            byte[] inputByteArray = Convert.FromBase64String(pToDecrypt);
+            using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
+            {
+
+                des.Key = ASCIIEncoding.ASCII.GetBytes(key);
+                des.IV = ASCIIEncoding.ASCII.GetBytes(key);
+
+                var ms = new System.IO.MemoryStream();
+                using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write))
+                {
+                    cs.Write(inputByteArray, 0, inputByteArray.Length);
+                    cs.FlushFinalBlock();
+                    cs.Close();
+                }
+                string str = Encoding.UTF8.GetString(ms.ToArray());
+                ms.Close();
+                return str;
+            }
+        }
+
+        #endregion
+
+        #region 鈻� 鐩戝惉缃戠粶鍙樺寲_______________________
+
+        /// <summary>
+        /// 寮�鍚洃鍚綉缁�
+        /// </summary>
+        public void StartListenNetWork()
+        {
+            if (hadAddListenNetWork == true)
+            {
+                return;
+            }
+            hadAddListenNetWork = true;
+
+#if Android
+            //寮�鍚洃鍚畨鍗撶綉缁滃彉鍖�
+            BaseActivity.NetworkStateChanged += (value) =>
+            {
+                //缃戠粶鍙樺寲
+                this.NetworkStateChanged(value);
+            };
+#endif
+
+#if iOS
+            //寮�鍚洃鍚琁OS缃戠粶鍙樺寲
+            GateWay.Ios.Reachability.ReachabilityChanged += (sender, e) =>
+            {
+                var internetStatus = GateWay.Ios.Reachability.InternetConnectionStatus();
+                if (internetStatus == GateWay.Ios.NetworkStatus.NotReachable)//娌℃湁缃戠粶杩炴帴 0
+                {
+                    //缃戠粶鍙樺寲
+                    this.NetworkStateChanged(0);
+                }
+                else if (internetStatus == GateWay.Ios.NetworkStatus.ReachableViaCarrierDataNetwork)//3,4G鐨勭綉缁滆繛鎺� 1
+                {
+                    //缃戠粶鍙樺寲
+                    this.NetworkStateChanged(1);
+                }
+                else if (internetStatus == GateWay.Ios.NetworkStatus.ReachableViaWiFiNetwork) //wifi鐨勭綉缁滆繛鎺� 2
+                {
+                    //缃戠粶鍙樺寲
+                    this.NetworkStateChanged(2);
+                }
+            };
+#endif
+        }
+
+        /// <summary>
+        /// 鐩戝惉瀹夊崜缃戠粶鍙樺寲
+        /// </summary>
+        /// <param name="value">0:娌℃湁缃戠粶 1:4G  2:wifi</param>
+        public void NetworkStateChanged(int value)
+        {
+            if (Common.Config.Instance.HomeId == string.Empty)
+            {
+                //鍦ㄧ櫥褰曠晫闈笉澶勭悊
+                return;
+            }
+#if iOS
+            var nowSsid = this.SSID;
+            if (this.oldSsid == nowSsid)
+            {
+                //濡傛灉褰撳墠 wifi 鐨勫悕瀛椾竴鏍凤紝鍒欎笉澶勭悊
+                ZigBee.Common.Application.FindGateWaySocket.Start();
+                return;
+            }
+            this.oldSsid = nowSsid;
+#endif
+            //娌℃湁缃戠粶
+            if (value == 0)
+            {
+                this.CanAccessHttp = false;
+                //鍏抽棴Socket
+                ZigBee.Common.Application.FindGateWaySocket.Stop();
+            }
+            //WIFI鎴栬��4G鏃�
+            if (value == 1 || value == 2)
+            {
+                //鍏佽鑱旂綉
+                this.CanAccessHttp = true;
+                this.changedNetworkTime = DateTime.Now.ToString("yyyyMMdd HH.mm.ss");
+                //褰撳墠鎵ц姝ょ嚎绋嬬殑鏃堕棿
+                string thisThreadTime = this.changedNetworkTime;
+
+                HdlThreadLogic.Current.RunThread(() =>
+                {
+                    //涓嶇濡備綍,閮借鏄剧ず杞湀
+                    ProgressBar.Show();
+
+                    //妫�娴嬫槸鍚﹀凡缁忓畬鎴愯处鍙蜂俊鎭垵濮嬪寲
+                    if (UserCenterResourse.UserInfo.InitUserInfoSuccess == false
+                       && Common.Config.Instance.HomeId != string.Empty)
+                    {
+                        //閲嶆柊鍒濆鍖栬处鍙蜂俊鎭�
+                        UserCenterLogic.ReInitUserAccoutInfo();
+                        //鍥犱负涓婇潰杩欎釜涓滆タ鑰楁椂铔箙鐨�,鎵�浠ュ鐞嗗畬涔嬪悗杩涜鍒ゆ柇
+                        if (thisThreadTime != this.changedNetworkTime)
+                        {
+                            //鍦ㄥ鐞嗙殑杩囩▼涓�,鍒囨崲浜嗙綉缁�,鎶婁笅闈㈢殑澶勭悊浜ょ粰鍙﹀鐨勭嚎绋�
+                            return;
+                        }
+                    }
+                    //閲嶆柊鍒濆鍖朣ocket
+                    ZigBee.Common.Application.FindGateWaySocket.Stop();
+                    System.Threading.Thread.Sleep(100);
+
+                    //鏂帀鏈湴杩炴帴
+                    HdlGatewayLogic.Current.ClearAllRealGatewayConection(true);
+                    //鏂帀杩滅▼
+                    ZigBee.Device.ZbGateway.CloseRemoteConnectionOnForce();
+
+                    //濡傛灉鏄痺ifi
+                    if (value == 2)
+                    {
+                        ZigBee.Common.Application.FindGateWaySocket.Start();
+                        //鍊熺敤涓�涓嬭繖涓彉閲�(妫�娴嬭兘鍚﹀箍鎾埌缃戝叧)
+                        UserCenterResourse.DicReceiveGatewayTest = new Dictionary<string, ZigBee.Device.ZbGateway>();
+                        UserCenterResourse.HideOption.CheckCanReceiveGateway = 1;
+                        //鍥哄畾绛変釜3绉掑惂
+                        System.Threading.Thread.Sleep(2500);
+                        if (thisThreadTime != this.changedNetworkTime)
+                        {
+                            //鍙樻洿浜嗙綉缁�,浜ょ敱鍏朵粬绾跨▼澶勭悊
+                            return;
+                        }
+                        UserCenterResourse.HideOption.CheckCanReceiveGateway = 0;
+                        System.Threading.Thread.Sleep(500);
+
+                        bool canReceiveGw = false;
+                        foreach (var gateway in UserCenterResourse.DicReceiveGatewayTest.Values)
+                        {
+                            if (gateway.HomeId == Common.Config.Instance.Home.Id)
+                            {
+                                //鑳藉鎼滅储寰楀埌缃戝叧
+                                canReceiveGw = true;
+                                break;
+                            }
+                        }
+                        UserCenterResourse.DicReceiveGatewayTest = null;
+                        //璁剧疆杩滅▼杩炴帴鐨勫垵濮嬪��
+                        ZigBee.Device.ZbGateway.IsRemote = canReceiveGw == false;
+                        if (canReceiveGw == false)
+                        {
+                            //濡傛灉鏄繙绋嬬殑璇�,杩藉姞绛夊緟鏃堕棿(鎬诲叡5绉�)
+                            System.Threading.Thread.Sleep(2000);
+                        }
+                    }
+                    else if (value == 1)
+                    {
+                        //濡傛灉鏄�4G鐨勮瘽,鐩存帴绛夊緟
+                        System.Threading.Thread.Sleep(4500);
+                    }
+                    ProgressBar.Close();
+
+                }, ShowErrorMode.NO);
+            }
+        }
+
+        #endregion
+
+        #region 鈻� 涓�鑸柟娉昣__________________________
+
+#if Android
+        /// <summary>
+        /// 寮�濮媁i-Fi閰嶇綉
+        /// </summary>
+        /// <param name="wifiName">wifi鍚嶅瓧</param>
+        /// <param name="wifiPsw">wifi瀵嗙爜</param>
+        /// <param name="p2">鎴戜篃涓嶇煡閬撹繖涓槸浠�涔堜笢瑗�</param>
+        /// <returns></returns>
+        public bool StartSmartConnection(string wifiName, string wifiPsw, string p2 = "")
+        {
+            if (hdlWiFi == null)
+            {
+                var result2 = Com.Mediatek.Elian.ElianNative.LoadLib();
+                //鍒濆鍖朩i-Fi閰嶇綉
+                this.hdlWiFi = new Com.Mediatek.Elian.ElianNative();
+                var value = hdlWiFi.InitSmartConnection(null, 1, 1);
+            }
+            //寮�濮媁i-Fi閰嶇綉
+            var result = hdlWiFi.StartSmartConnection(wifiName, wifiPsw, p2);
+            return true;
+        }
+
+        /// <summary>
+        /// 鍋滄Wi-Fi閰嶇綉
+        /// </summary>
+        public void StopSmartConnection()
+        {
+            if (hdlWiFi != null)
+            {
+                //鍋滄Wi-Fi閰嶇綉
+                var result = hdlWiFi.StopSmartConnection();
+                hdlWiFi = null;
+            }
+        }
+#endif
+#if iOS
+        /// <summary>
+        /// 寮�濮媁i-Fi閰嶇綉
+        /// </summary>
+        /// <param name="wifiName">wifi鍚嶅瓧</param>
+        /// <param name="wifiPsw">wifi瀵嗙爜</param>
+        /// <param name="p2">鎴戜篃涓嶇煡閬撹繖涓槸浠�涔堜笢瑗�</param>
+        /// <returns></returns>
+        public bool StartSmartConnection(string wifiName, string wifiPsw, string p2 = "")
+        {
+            //鍒濆鍖朩i-Fi杩炴帴
+            //Com.Mediatek.Elian.ElianNative.InitSmartConnection("1", 1, 1);
+            Com.Mediatek.Elian.ElianNative.InitSmartConnection( 1, 1);
+
+            //寮�濮媁i-Fi杩炴帴
+            var result = Com.Mediatek.Elian.ElianNative.StartSmartConnection(wifiName, wifiPsw, p2);
+            return true;
+        }
+
+        /// <summary>
+        /// 鍋滄Wi-Fi閰嶇綉
+        /// </summary>
+        public void StopSmartConnection()
+        {
+            //鍋滄Wi-Fi閰嶇綉
+            Com.Mediatek.Elian.ElianNative.StopSmartConnection();
+        }
+#endif
+
+        /// <summary>
+        /// 鎵撳紑鎵嬫満wifi璁剧疆鐣岄潰
+        /// </summary>
+        public void OpenAppWifiSettion()
+        {
+            if (Application.DeviceType == Shared.Device.Android)
+            {
+                ///鎵撳紑WI-IF鐣岄潰
+                CommonClass.OpenAction("android.settings.WIFI_SETTINGS");
+            }
+            else
+            {
+                CommonClass.OpenAction("App-Prefs:root=WIFI");
+            }
+        }
+
+        #endregion
+    }
+}

--
Gitblit v1.8.0