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 | 947 ++++++++++++++++++++++++++++++++++++----------------------- 1 files changed, 576 insertions(+), 371 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 0f40b6d..cde9b36 --- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlWifiLogic.cs +++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlWifiLogic.cs @@ -1,371 +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> - /// 褰撳墠鏄惁鏄綉鍏崇儹鐐� - /// </summary> - public bool IsGatewayHotspot - { - get - { - string myId = this.SSID; - - 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; - } - return false; - } - } - - /// <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; - - #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 = "") - { - 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); - //寮�濮媁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