using HDL_ON.Stan; using Shared; using System; using System.Collections.Generic; using System.Text; namespace HDL_ON.UI { /// /// 添加Evoyo的Mini智能遥控器步骤2界面 /// public class AddMiniRemoteControlDirection2Page : EditorCommonForm { #region ■ 变量声明___________________________ /// /// wifi名 /// private string wifiName = string.Empty; /// /// wifi密码 /// private string wifiPassword = string.Empty; /// /// 蓝牙设备 /// private List listDevice = new List(); #endregion #region ■ 初始化_____________________________ /// /// 画面显示(底层会固定调用此方法,借以完成画面创建) /// /// wifi名(别的界面传过来的) /// (别的界面传过来的) 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(); } /// /// 初始化中部信息 /// 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 ■ 搜索蓝牙___________________________ /// /// 搜索蓝牙 /// 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(); 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(); } }); }); } }); } /// /// 开启进度条特效 /// 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 ■ 显示选择蓝牙列表的界面_____________ /// /// 显示选择蓝牙列表的界面(当匹配到多个蓝牙的时候使用) /// /// 蓝牙名字列表 /// 选择事件(考虑到Ios和安卓,所以这样定参数) private void ShowBluetoothListView(List listName, Action 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()); contr.FinishOnlyEvent += (div, value) => { if (div == 0) { //如果点击了取消,则关闭这个界面,不管了 this.CloseForm(); } else { //调用回调函数 selectEvent?.Invoke(value); } }; }); } #endregion #region ■ 显示失败界面_______________________ /// /// 显示失败界面 /// 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 } }