File was renamed from ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlWifiLogic.cs |
| | |
| | | using System.Security.Cryptography; |
| | | using System.Text; |
| | | |
| | | namespace Shared.Phone.UserCenter |
| | | namespace Shared.Phone |
| | | { |
| | | /// <summary> |
| | | /// WiFi的逻辑 |
| | |
| | | /// </summary> |
| | | private bool hadAddListenNetWork = false; |
| | | |
| | | /// <summary> |
| | | /// 能否访问http |
| | | /// </summary> |
| | | private bool m_CanAccessHttp = true; |
| | | /// <summary> |
| | | /// 上一次访问http的时间 |
| | | /// </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> |
| | |
| | | //没有网络 |
| | | 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; |
| | |
| | | //不管如何,都要显示转圈 |
| | | ProgressBar.Show(); |
| | | |
| | | //检测是否已经完成账号信息初始化 |
| | | if (UserCenterResourse.UserInfo.InitUserInfoSuccess == false |
| | | && Common.Config.Instance.HomeId != string.Empty) |
| | | { |
| | | //重新初始化账号信息 |
| | | UserCenterLogic.ReInitUserAccoutInfo(); |
| | | //因为上面这个东西耗时蛮久的,所以处理完之后进行判断 |
| | | if (thisThreadTime != this.changedNetworkTime) |
| | | { |
| | | //在处理的过程中,切换了网络,把下面的处理交给另外的线程 |
| | | return; |
| | | } |
| | | } |
| | | //重新初始化Socket |
| | | ZigBee.Common.Application.FindGateWaySocket.Stop(); |
| | | System.Threading.Thread.Sleep(100); |
| | |
| | | //断掉远程 |
| | | ZigBee.Device.ZbGateway.CloseRemoteConnectionOnForce(); |
| | | |
| | | //如果是wifi |
| | | if (value == 2) |
| | | //启动socket |
| | | ZigBee.Common.Application.FindGateWaySocket.Start(); |
| | | |
| | | //重新初始化账号信息 (可能的状态码:Sucess NotNetWork AuthorityChangd TokenTimeOunt)(-1:无网 1:正常 2:登陆不进去 3:权限变更了) |
| | | var result = HdlAccountLogic.Current.ReInitUserAccoutInfo(); |
| | | if (result == AccountStatu.TokenTimeOunt || result == AccountStatu.AuthorityChangd) |
| | | { |
| | | ZigBee.Common.Application.FindGateWaySocket.Start(); |
| | | //借用一下这个变量(检测能否广播到网关) |
| | | UserCenterResourse.DicReceiveGatewayTest = new Dictionary<string, ZigBee.Device.ZbGateway>(); |
| | | UserCenterResourse.HideOption.CheckCanReceiveGateway = 1; |
| | | //固定等个3秒吧 |
| | | System.Threading.Thread.Sleep(2500); |
| | | //这两个已经被踢到了登陆界面 |
| | | ProgressBar.Close(); |
| | | return; |
| | | } |
| | | //当无网时,里面已经等待了3秒 |
| | | int waitCount = result == AccountStatu.NotNetWork ? 3 : 9; |
| | | //固定等待4.5秒 |
| | | for (int i = 0; i < waitCount; i++) |
| | | { |
| | | 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); |