New file |
| | |
| | | using HDL_ON.Stan; |
| | | using Shared; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Text; |
| | | |
| | | namespace HDL_ON.UI |
| | | { |
| | | /// <summary> |
| | | /// 添加Evoyo的Mini智能遥控器步骤2界面 |
| | | /// </summary> |
| | | public class AddMiniRemoteControlDirection2Page : EditorCommonForm |
| | | { |
| | | #region ■ 变量声明___________________________ |
| | | |
| | | /// <summary> |
| | | /// wifi名 |
| | | /// </summary> |
| | | private string wifiName = string.Empty; |
| | | /// <summary> |
| | | /// wifi密码 |
| | | /// </summary> |
| | | private string wifiPassword = string.Empty; |
| | | /// <summary> |
| | | /// 蓝牙设备 |
| | | /// </summary> |
| | | private List<HdlBluetoothLogic.BluetoothInfo> listDevice = new List<HdlBluetoothLogic.BluetoothInfo>(); |
| | | |
| | | #endregion |
| | | |
| | | #region ■ 初始化_____________________________ |
| | | |
| | | /// <summary> |
| | | /// 画面显示(底层会固定调用此方法,借以完成画面创建) |
| | | /// </summary> |
| | | /// <param name="i_wifiName">wifi名(别的界面传过来的)</param> |
| | | /// <param name="i_wifiPassword">(别的界面传过来的)</param> |
| | | public void ShowForm(string i_wifiName, string i_wifiPassword) |
| | | { |
| | | this.wifiName = i_wifiName; |
| | | this.wifiPassword = i_wifiPassword; |
| | | |
| | | //设置头部信息 |
| | | base.SetTitleText(Language.StringByID(StringId.AddInfraredRemoteControl)); |
| | | //这个界面的背景需要白色 |
| | | bodyFrameLayout.BackgroundColor = UI.CSS.CSS_Color.MainBackgroundColor; |
| | | |
| | | //初始化中部信息 |
| | | this.InitMiddleFrame(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 初始化中部信息 |
| | | /// </summary> |
| | | private void InitMiddleFrame() |
| | | { |
| | | //清空body |
| | | this.ClearBodyFrame(); |
| | | |
| | | //进度条 |
| | | var btnProgress = new ProgressRowBar(180, 6); |
| | | btnProgress.Y = Application.GetRealHeight(218); |
| | | btnProgress.Gravity = Gravity.CenterHorizontal; |
| | | bodyFrameLayout.AddChidren(btnProgress); |
| | | btnProgress.StartMode1(true); |
| | | |
| | | //设备搜索中... |
| | | var btnSearch = new NormalViewControl(bodyFrameLayout.Width, Application.GetRealHeight(20), false); |
| | | btnSearch.Y = btnProgress.Bottom + Application.GetRealHeight(40); |
| | | btnSearch.TextColor = CSS.CSS_Color.FirstLevelTitleColor; |
| | | btnSearch.TextID = StringId.SearchingDevice; |
| | | btnSearch.TextAlignment = TextAlignment.Center; |
| | | bodyFrameLayout.AddChidren(btnSearch); |
| | | |
| | | //请确保您的蓝牙已开启并处于可以被搜索状态 |
| | | var strMsg = Language.StringByID(StringId.AddInfraredRemoteControlMsg2); |
| | | this.AddListMsgControls(bodyFrameLayout, strMsg, CSS.CSS_FontSize.TextFontSize, |
| | | CSS.CSS_Color.FirstLevelTitleColor, Application.GetRealHeight(20), btnSearch.Bottom + Application.GetRealHeight(4)); |
| | | |
| | | //开启进度条特效 |
| | | this.StartProgressSpecialEffects(btnProgress); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region ■ 搜索蓝牙___________________________ |
| | | |
| | | /// <summary> |
| | | /// 搜索蓝牙 |
| | | /// </summary> |
| | | private void StartSearchBluetooth() |
| | | { |
| | | //开始搜索蓝牙 |
| | | HdlBluetoothLogic.Current.ScanBluetooth(2, (listBluetooth) => |
| | | { |
| | | foreach (var device in listBluetooth) |
| | | { |
| | | //只有这个标识,才是红外宝 |
| | | if (device.Name.StartsWith("MIR01R-LK.10") == true) |
| | | { |
| | | //是指定的红外宝设备 |
| | | listDevice.Add(device); |
| | | } |
| | | } |
| | | if (listDevice.Count == 0) |
| | | { |
| | | //摧毁蓝牙缓存 |
| | | HdlBluetoothLogic.Current.Dispone(); |
| | | } |
| | | else if (listDevice.Count == 1) |
| | | { |
| | | //如果只检测到一个,则直接连接 |
| | | HdlBluetoothLogic.Current.ContectBluetooth(listDevice[0], (result) => |
| | | { |
| | | if (result == true && this.Parent != null) |
| | | { |
| | | //连接成功,则跳转到下一个界面 |
| | | HdlThreadLogic.Current.RunMain(() => |
| | | { |
| | | this.CloseForm(); |
| | | var form = new AddMiniRemoteControlDirection3Page(); |
| | | form.AddForm(this.wifiName, this.wifiPassword); |
| | | }); |
| | | } |
| | | else |
| | | { |
| | | HdlBluetoothLogic.Current.Dispone(); |
| | | } |
| | | }); |
| | | } |
| | | else |
| | | { |
| | | var listName = new List<string>(); |
| | | foreach (var device in listDevice) |
| | | { |
| | | listName.Add(device.Name); |
| | | } |
| | | //显示选择蓝牙列表的界面(当匹配到多个蓝牙的时候使用) |
| | | this.ShowBluetoothListView(listName, (index) => |
| | | { |
| | | //如果只检测到一个,则直接连接 |
| | | HdlBluetoothLogic.Current.ContectBluetooth(listDevice[index], (result) => |
| | | { |
| | | if (result == true) |
| | | { |
| | | //连接成功,则跳转到下一个界面 |
| | | HdlThreadLogic.Current.RunMain(() => |
| | | { |
| | | this.CloseForm(); |
| | | var form = new AddMiniRemoteControlDirection3Page(); |
| | | form.AddForm(this.wifiName, this.wifiPassword); |
| | | }); |
| | | } |
| | | else |
| | | { |
| | | HdlBluetoothLogic.Current.Dispone(); |
| | | } |
| | | }); |
| | | }); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 开启进度条特效 |
| | | /// </summary> |
| | | private void StartProgressSpecialEffects(ProgressRowBar btnProgress) |
| | | { |
| | | //搜索时间(秒) |
| | | int searchTime = 180; |
| | | HdlThreadLogic.Current.RunThread(() => |
| | | { |
| | | //进度条特效 |
| | | for (int i = 1; i <= searchTime; i++) |
| | | { |
| | | System.Threading.Thread.Sleep(1000); |
| | | HdlThreadLogic.Current.RunMain(() => |
| | | { |
| | | //进度条特效 |
| | | btnProgress.SetValue(i, searchTime); |
| | | }); |
| | | |
| | | //界面关闭 |
| | | if (this.Parent == null) |
| | | { |
| | | break; |
| | | } |
| | | //如果已经搜索到蓝牙,则直接到100% |
| | | if (listDevice.Count > 0) |
| | | { |
| | | HdlThreadLogic.Current.RunMain(() => |
| | | { |
| | | btnProgress.SetValue(searchTime, searchTime); |
| | | }); |
| | | break; |
| | | } |
| | | if (i % 5 == 1) |
| | | { |
| | | //每5秒搜索一次 |
| | | this.StartSearchBluetooth(); |
| | | } |
| | | //超时 |
| | | if (i >= searchTime) |
| | | { |
| | | System.Threading.Thread.Sleep(3000); |
| | | //最后的时间还是搜不到的话 |
| | | if (listDevice.Count == 0) |
| | | { |
| | | //显示失败界面 |
| | | HdlThreadLogic.Current.RunMain(() => |
| | | { |
| | | this.ShowFailView(); |
| | | }); |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region ■ 显示选择蓝牙列表的界面_____________ |
| | | |
| | | /// <summary> |
| | | /// 显示选择蓝牙列表的界面(当匹配到多个蓝牙的时候使用) |
| | | /// </summary> |
| | | /// <param name="listName">蓝牙名字列表</param> |
| | | /// <param name="selectEvent">选择事件(考虑到Ios和安卓,所以这样定参数)</param> |
| | | private void ShowBluetoothListView(List<string> listName, Action<int> selectEvent) |
| | | { |
| | | if (this.Parent == null) { return; } |
| | | |
| | | HdlThreadLogic.Current.RunMain(() => |
| | | { |
| | | var contr = new BottomItemSelectControl(listName.Count, Language.StringByID(StringId.ChooseInfraredRemoteControl), false); |
| | | //初始化 |
| | | contr.AddRowMenu(listName, new List<int>()); |
| | | contr.FinishOnlyEvent += (div, value) => |
| | | { |
| | | if (div == 0) |
| | | { |
| | | //如果点击了取消,则关闭这个界面,不管了 |
| | | this.CloseForm(); |
| | | } |
| | | else |
| | | { |
| | | //调用回调函数 |
| | | selectEvent?.Invoke(value); |
| | | } |
| | | }; |
| | | }); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region ■ 显示失败界面_______________________ |
| | | |
| | | /// <summary> |
| | | /// 显示失败界面 |
| | | /// </summary> |
| | | private void ShowFailView() |
| | | { |
| | | //清空body |
| | | this.ClearBodyFrame(); |
| | | //图片 |
| | | var btnPic = new PicViewControl(180, 180); |
| | | btnPic.Y = Application.GetRealHeight(48); |
| | | btnPic.Gravity = Gravity.CenterHorizontal; |
| | | btnPic.UnSelectedImagePath = "Public/TipIcon_Failed.png"; |
| | | bodyFrameLayout.AddChidren(btnPic); |
| | | //没有发现红外遥控器 |
| | | var btnMsgNot = new NormalViewControl(bodyFrameLayout.Width, Application.GetRealHeight(22), false); |
| | | btnMsgNot.Y = btnPic.Bottom + Application.GetRealHeight(16); |
| | | btnMsgNot.TextAlignment = TextAlignment.Center; |
| | | btnMsgNot.TextColor = CSS.CSS_Color.AuxiliaryColor2; |
| | | btnMsgNot.TextSize = CSS.CSS_FontSize.SubheadingFontSize; |
| | | btnMsgNot.TextID = StringId.NoInfraredRemoteControlFound; |
| | | bodyFrameLayout.AddChidren(btnMsgNot); |
| | | //1、请检查设备是否正常通电 |
| | | //2、请检查蓝牙功能是否正常开启 |
| | | //3、请检查指示灯是否蓝色快闪状态 |
| | | var strMsg = Language.StringByID(StringId.AddInfraredRemoteControlMsg3); |
| | | this.AddListMsgControls(bodyFrameLayout, strMsg, CSS.CSS_FontSize.TextFontSize, |
| | | CSS.CSS_Color.TextualColor, Application.GetRealHeight(20), btnMsgNot.Bottom + Application.GetRealHeight(8), |
| | | TextAlignment.Center, true); |
| | | |
| | | //重新搜索 |
| | | var btnReSearch = this.AddBottomClickButton(Language.StringByID(StringId.ReSearch)); |
| | | btnReSearch.ButtonClickEvent += (sender, e) => |
| | | { |
| | | //检测蓝牙需要的东西 |
| | | btnReSearch.CanClick = false; |
| | | HdlBluetoothLogic.Current.CheckCanScanBluetooth((result) => |
| | | { |
| | | btnReSearch.CanClick = true; |
| | | if (result == true) |
| | | { |
| | | //初始化中部信息 |
| | | this.InitMiddleFrame(); |
| | | } |
| | | }); |
| | | }; |
| | | } |
| | | |
| | | #endregion |
| | | } |
| | | } |