From c7df85937f73fb347ee0b19e9c052d2d00a6df6c Mon Sep 17 00:00:00 2001
From: 黄学彪 <hxb@hdlchina.com.cn>
Date: 星期五, 18 九月 2020 13:58:19 +0800
Subject: [PATCH] 新版本

---
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlWifiLogic.cs |  205 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 203 insertions(+), 2 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlWifiLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlWifiLogic.cs
index 8c68ded..c7bc442 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlWifiLogic.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlWifiLogic.cs
@@ -57,7 +57,7 @@
             {
                 string myId = this.SSID;
 
-                if (myId != null && myId.StartsWith("Widora-") == true)
+                if (myId != null && myId.StartsWith("hdlZigbeeGW-") == true)
                 {
                     return true;
                 }
@@ -114,7 +114,6 @@
         /// </summary>
         private Com.Mediatek.Elian.ElianNative hdlWiFi = null;
 #endif
-
         /// <summary>
         /// TCP鍗忚
         /// </summary>
@@ -127,6 +126,48 @@
         /// 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
 
@@ -144,6 +185,7 @@
                 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.";
@@ -286,6 +328,165 @@
 
         #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.DisConnectRemoteMqttClient();
+
+                    //濡傛灉鏄痺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

--
Gitblit v1.8.0