From f3e65daca7978b21b5888f49b1bf35e1a6e5d4fd Mon Sep 17 00:00:00 2001
From: 黄学彪 <hxb@hdlchina.com.cn>
Date: 星期一, 13 七月 2020 12:33:31 +0800
Subject: [PATCH] 新版本

---
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlWifiLogic.cs |  177 ++++++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 156 insertions(+), 21 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlWifiLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlWifiLogic.cs
index b73cdc7..ce24a39 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlWifiLogic.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlWifiLogic.cs
@@ -32,18 +32,6 @@
         }
 
         /// <summary>
-        /// 褰撳墠Wifi鐨処p鍦板潃
-        /// </summary>
-        public string IpAddress
-        {
-            get
-            {
-                var temp = new Shared.Net.NetWiFi();
-                return temp.GetIPAddress();
-            }
-        }
-
-        /// <summary>
         /// 褰撳墠鏄惁鏄綉鍏崇儹鐐�
         /// </summary>
         public bool IsGatewayHotspot
@@ -52,7 +40,24 @@
             {
                 string myId = this.SSID;
 
-                if (myId.StartsWith("hdlZigbeeGW") == true)
+                if (myId != null && myId.StartsWith("hdlZigbeeGW") == true)
+                {
+                    return true;
+                }
+                return false;
+            }
+        }
+
+        /// <summary>
+        /// 褰撳墠鏄惁鏄疢ini缃戝叧鐑偣
+        /// </summary>
+        public bool IsMiniGatewayHotspot
+        {
+            get
+            {
+                string myId = this.SSID;
+
+                if (myId != null && myId.StartsWith("hdlZigbeeGW-") == true)
                 {
                     return true;
                 }
@@ -68,7 +73,12 @@
             get
             {
 #if iOS
-                return string.Empty;
+                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;
@@ -104,7 +114,6 @@
         /// </summary>
         private Com.Mediatek.Elian.ElianNative hdlWiFi = null;
 #endif
-
         /// <summary>
         /// TCP鍗忚
         /// </summary>
@@ -117,6 +126,40 @@
         /// 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;
+            }
+        }
 
         #endregion
 
@@ -276,6 +319,97 @@
 
         #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>
+        private void NetworkStateChanged(int value)
+        {
+            //娌℃湁缃戠粶
+            if (value == 0)
+            {
+                this.CanAccessHttp = false;
+                //鍏抽棴Socket
+                ZigBee.Common.Application.FindGateWaySocket.Stop();
+            }
+            //WIFI鎴栬��4G鏃�
+            if (value == 1 || value == 2)
+            {
+                //鍏佽鑱旂綉
+                this.CanAccessHttp = true;
+
+                //妫�娴嬫槸鍚﹀凡缁忓畬鎴愯处鍙蜂俊鎭垵濮嬪寲
+                if (UserCenterResourse.UserInfo.InitUserInfoSuccess == false
+                   && Common.Config.Instance.HomeId != string.Empty)
+                {
+                    HdlThreadLogic.Current.RunThread(() =>
+                    {
+                        ProgressBar.Show();
+                        //閲嶆柊鍒濆鍖栬处鍙蜂俊鎭�
+                        UserCenterLogic.ReInitUserAccoutInfo();
+                        ProgressBar.Close();
+
+                    }, ShowErrorMode.NO);
+                }
+                //閲嶆柊鍒濆鍖朣ocket
+                ZigBee.Common.Application.FindGateWaySocket.Stop();
+                if (value == 2)
+                {
+                    ZigBee.Common.Application.FindGateWaySocket.Start();
+                }
+                //鏂帀鏈湴杩炴帴
+                HdlGatewayLogic.Current.ClearAllRealGateway();
+            }
+        }
+
+        #endregion
+
         #region 鈻� 涓�鑸柟娉昣__________________________
 
 #if Android
@@ -286,14 +420,14 @@
         /// <param name="wifiPsw">wifi瀵嗙爜</param>
         /// <param name="p2">鎴戜篃涓嶇煡閬撹繖涓槸浠�涔堜笢瑗�</param>
         /// <returns></returns>
-        public bool StartSmartConnection(string wifiName, string wifiPsw, string p2 = "1")
+        public bool StartSmartConnection(string wifiName, string wifiPsw, string p2 = "")
         {
             if (hdlWiFi == null)
             {
-                Com.Mediatek.Elian.ElianNative.LoadLib();
+                var result2 = Com.Mediatek.Elian.ElianNative.LoadLib();
                 //鍒濆鍖朩i-Fi閰嶇綉
                 this.hdlWiFi = new Com.Mediatek.Elian.ElianNative();
-                hdlWiFi.InitSmartConnection(null, 1, 1);
+                var value = hdlWiFi.InitSmartConnection(null, 1, 1);
             }
             //寮�濮媁i-Fi閰嶇綉
             var result = hdlWiFi.StartSmartConnection(wifiName, wifiPsw, p2);
@@ -308,7 +442,8 @@
             if (hdlWiFi != null)
             {
                 //鍋滄Wi-Fi閰嶇綉
-                hdlWiFi.StopSmartConnection();
+                var result = hdlWiFi.StopSmartConnection();
+                hdlWiFi = null;
             }
         }
 #endif
@@ -320,10 +455,10 @@
         /// <param name="wifiPsw">wifi瀵嗙爜</param>
         /// <param name="p2">鎴戜篃涓嶇煡閬撹繖涓槸浠�涔堜笢瑗�</param>
         /// <returns></returns>
-        public bool StartSmartConnection(string wifiName, string wifiPsw, string p2 = "1")
+        public bool StartSmartConnection(string wifiName, string wifiPsw, string p2 = "")
         {
             //鍒濆鍖朩i-Fi杩炴帴
-            Com.Mediatek.Elian.ElianNative.InitSmartConnection(null, 1, 1);
+            Com.Mediatek.Elian.ElianNative.InitSmartConnection("1", 1, 1);
             //寮�濮媁i-Fi杩炴帴
             var result = Com.Mediatek.Elian.ElianNative.StartSmartConnection(wifiName, wifiPsw, p2);
             return true;

--
Gitblit v1.8.0