| | |
| | | } |
| | | confirmBtn.MouseUpEventHandler += (sender, e) => |
| | | { |
| | | |
| | | |
| | | if (playList1.Count <= 1) |
| | | { |
| | | new PublicAssmebly().TipMsgAutoClose("至少选中两个以上播放器", false); |
| | |
| | | |
| | | if (playList2.Count == 0) |
| | | { |
| | | PlayerView(dialog, playList1, playList1); |
| | | SelectedPlayerView(dialog, playList1, playList1); |
| | | } |
| | | else if (playList2.Count == 1) |
| | | { |
| | |
| | | } |
| | | else |
| | | { |
| | | PlayerView(dialog, playList1, playList2); |
| | | SelectedPlayerView(dialog, playList1, playList2); |
| | | } |
| | | }; |
| | | } |
| | | /// <summary> |
| | | /// 选中主播放器的界面 |
| | | /// </summary> |
| | | /// <param name="musicList1"></param> |
| | | /// /// <param name="musicList2">显示播放器列表</param> |
| | | void PlayerView(Dialog dialogF, List<A31MusicModel> musicList1, List<A31MusicModel> musicList2) |
| | | /// <param name="musicList1">显示将要组合的播放器列表</param> |
| | | /// /// <param name="musicList2">显示在播放音乐播放器列表</param> |
| | | void SelectedPlayerView(Dialog dialogF, List<A31MusicModel> musicList1, List<A31MusicModel> musicList2) |
| | | { |
| | | |
| | | //主控件 |
| | |
| | | } |
| | | dialogF.Close(); |
| | | dialog.Close(); |
| | | |
| | | var serverMusic = selectedBtn.Tag as A31MusicModel; |
| | | Threading(serverMusic, musicList1); |
| | | |
| | | |
| | | }; |
| | | |
| | | } |
| | |
| | | /// <param name="musicList1"></param> |
| | | void Threading(A31MusicModel serverMusic, List<A31MusicModel> musicList1) |
| | | { |
| | | MusicMain.loading.Start("配置中..."); |
| | | bool _if = false; |
| | | System.Threading.Tasks.Task.Run(() => |
| | | { |
| | | try |
| | | { |
| | | |
| | | var IP = ""; |
| | | if (serverMusic.ServerClientType == -1) |
| | | { |
| | | IP = serverMusic.MainPlayIP; |
| | | } |
| | | else |
| | | { |
| | | IP = serverMusic.IPAddress; |
| | | } |
| | | |
| | | var statusEx = SendMethod.OpenWeb("http://" + IP + "/httpapi.asp?command=getStatusEx"); |
| | | var statusEx = SendMethod.OpenWeb("http://" + serverMusic.IPAddress + "/httpapi.asp?command=getStatusEx"); |
| | | if (statusEx == null) |
| | | { |
| | | statusEx = SendMethod.OpenWeb("http://" + IP + "/httpapi.asp?command=getStatusEx"); |
| | | statusEx = SendMethod.OpenWeb("http://" + serverMusic.IPAddress + "/httpapi.asp?command=getStatusEx"); |
| | | } |
| | | if (statusEx == null) |
| | | { |
| | |
| | | //过滤掉主播放器; |
| | | continue; |
| | | } |
| | | System.Threading.Thread.Sleep(1000);//等待一秒再发数据 |
| | | if (null == SendMethod.OpenWeb("http://" + clientMusic.IPAddress + "/httpapi.asp?command=ConnectMasterAp:ssid=" + ssid + ":ch=" + serverIfon.WifiChannel + ":auth=OPEN:encry=NONE:pwd=:chext=0:JoinGroupMaster:eth" + serverIfon.eth2 + ":wifi" + serverIfon.ra0 + ":uuid" + serverIfon.uuid)) |
| | | { |
| | | if (null == SendMethod.OpenWeb("http://" + clientMusic.IPAddress + "/httpapi.asp?command=ConnectMasterAp:ssid=" + ssid + ":ch=" + serverIfon.WifiChannel + ":auth=OPEN:encry=NONE:pwd=:chext=0:JoinGroupMaster:eth" + serverIfon.eth2 + ":wifi" + serverIfon.ra0 + ":uuid" + serverIfon.uuid)) |
| | |
| | | } |
| | | } |
| | | DateTime dateTime = DateTime.Now; |
| | | while ((DateTime.Now - dateTime).TotalMilliseconds < 10 * 1000) |
| | | while ((DateTime.Now - dateTime).TotalMilliseconds < 12 * 1000) |
| | | { |
| | | System.Threading.Thread.Sleep(1000); |
| | | try |
| | | { |
| | | var result = SendMethod.OpenWeb("http://" + serverMusic.IPAddress + "/httpapi.asp?command=multiroom:getSlaveList"); |
| | | if (result != null) |
| | | if (result != null && result != "Failed") |
| | | { |
| | | var tmepSlaves = Newtonsoft.Json.JsonConvert.DeserializeObject<Slaves>(result); |
| | | if (tmepSlaves != null && tmepSlaves.slave_list != null) |
| | | if (tmepSlaves != null && tmepSlaves.slave_list != null && tmepSlaves.slave_list.Count != 0) |
| | | { |
| | | string str = serverMusic.Name; |
| | | for (int j = 0; j < A31MusicModel.A31MusicModelList.Count; j++) |
| | |
| | | var music = A31MusicModel.A31MusicModelList[j]; |
| | | if (music.UniqueDeviceName == serverMusic.UniqueDeviceName) |
| | | { |
| | | |
| | | |
| | | music.ServerClientType = 1; |
| | | music.Slave = tmepSlaves; |
| | | //过滤掉主播放器; |
| | |
| | | music.IsOnLine = false; |
| | | music.IPAddress = slave_Ifon.ip; |
| | | music.MainPlayIP = serverMusic.IPAddress; |
| | | _if = true; |
| | | } |
| | | } |
| | | serverMusic.MainPlayName = str; |
| | |
| | | break; |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
| | | catch { } |
| | | } |
| | |
| | | { |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | MainPage.BasePageView.RemoveViewByTag("MusicMain"); |
| | | var musicMain = new MusicMain(); |
| | | MainPage.BasePageView.AddChidren(musicMain); |
| | | musicMain.Show(); |
| | | MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; |
| | | MusicMain.loading.Hide(); |
| | | ///可以提示配置失败; |
| | | if (_if) |
| | | { |
| | | //配置成功才可以刷新界面 |
| | | MainPage.BasePageView.RemoveViewByTag("MusicMain"); |
| | | var musicMain = new MusicMain(); |
| | | MainPage.BasePageView.AddChidren(musicMain); |
| | | musicMain.Show(); |
| | | MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 分开组合的播放器的界面 |
| | | /// </summary> |
| | | public void DetachPlayMergence(A31MusicModel a31player) |
| | | { |
| | | //主控件 |
| | | Dialog dialog = new Dialog() |
| | | { |
| | | BackgroundColor = Color.PopupBackgroundColor, |
| | | }; |
| | | dialog.Show(); |
| | | //父控件 |
| | | FrameLayout frame = new FrameLayout { }; |
| | | dialog.AddChidren(frame); |
| | | frame.MouseUpEventHandler += (sen, e) => |
| | | { |
| | | dialog.Close(); |
| | | }; |
| | | //白色快父控件 |
| | | FrameLayout dialogFra = new FrameLayout() |
| | | { |
| | | X = Application.GetRealWidth(16), |
| | | Y = Application.GetRealHeight(397), |
| | | Width = Application.GetRealWidth(344), |
| | | Height = Application.GetRealHeight(250), |
| | | BackgroundColor = Color.WhiteColor, |
| | | Radius = (uint)Application.GetRealHeight(12), |
| | | }; |
| | | frame.AddChidren(dialogFra); |
| | | //显示头部信息父控件 |
| | | FrameLayout topFra = new FrameLayout() |
| | | { |
| | | Width = Application.GetRealWidth(344), |
| | | Height = Application.GetRealHeight(50), |
| | | }; |
| | | dialogFra.AddChidren(topFra); |
| | | //取消控件 |
| | | Button cancelnBtn = new Button |
| | | { |
| | | X = Application.GetRealWidth(20), |
| | | Y = Application.GetRealHeight(15), |
| | | Width = Application.GetRealWidth(60), |
| | | Height = Application.GetRealHeight(20), |
| | | TextID = StringId.cancelMusic, |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | TextColor = Color.MusicNoTxetColor, |
| | | TextSize = TextSize.Text14, |
| | | }; |
| | | topFra.AddChidren(cancelnBtn); |
| | | cancelnBtn.MouseUpEventHandler += (sen, e) => |
| | | { |
| | | dialog.Close(); |
| | | }; |
| | | //标题控件 |
| | | Button txetBtn = new Button |
| | | { |
| | | X = cancelnBtn.Right + Application.GetRealWidth(20), |
| | | Y = Application.GetRealHeight(14), |
| | | Width = Application.GetRealWidth(152), |
| | | Height = Application.GetRealHeight(22), |
| | | TextColor = Color.TextColor, |
| | | TextSize = TextSize.Text16, |
| | | TextAlignment = TextAlignment.Center, |
| | | //TextID = StringId.selectedMergence, |
| | | IsBold = true, |
| | | Text= a31player.Name, |
| | | }; |
| | | topFra.AddChidren(txetBtn); |
| | | |
| | | //确认控件 |
| | | Button confirmBtn = new Button |
| | | { |
| | | X = Application.GetRealWidth(344 - 60 - 20), |
| | | Y = Application.GetRealHeight(15), |
| | | Width = Application.GetRealWidth(60), |
| | | Height = Application.GetRealHeight(20), |
| | | TextID = StringId.confirmMusic, |
| | | TextAlignment = TextAlignment.CenterRight, |
| | | TextColor = Color.SelectedColor, |
| | | TextSize = TextSize.Text14, |
| | | }; |
| | | topFra.AddChidren(confirmBtn); |
| | | |
| | | VerticalScrolViewLayout verticalScrolViewLayout = new VerticalScrolViewLayout |
| | | { |
| | | Y = Application.GetRealHeight(50), |
| | | Height = dialogFra.Height - Application.GetRealHeight(50), |
| | | Width = Application.GetRealWidth(344), |
| | | }; |
| | | dialogFra.AddChidren(verticalScrolViewLayout); |
| | | var slaveList= new List<Slave>(); |
| | | for (int i = 0; i < a31player.Slave.slave_list.Count; i++) |
| | | { |
| | | var slave = a31player.Slave.slave_list[i]; |
| | | RowLayout PlayRow = new RowLayout |
| | | { |
| | | Height = Application.GetRealHeight(50), |
| | | LineColor = Color.WhiteColor, |
| | | SubViewWidth = Application.GetRealWidth(80),//改变编辑控件宽度多少; |
| | | }; |
| | | verticalScrolViewLayout.AddChidren(PlayRow); |
| | | |
| | | |
| | | //播放器名称控件 |
| | | Button PlayNameBtn = new Button |
| | | { |
| | | X = Application.GetRealWidth(20), |
| | | Y = Application.GetRealHeight(15), |
| | | Width = Application.GetRealWidth(150), |
| | | Height = Application.GetRealHeight(20), |
| | | TextColor = Color.TextColor, |
| | | TextSize = TextSize.Text14, |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | Text = slave.name, |
| | | }; |
| | | PlayRow.AddChidren(PlayNameBtn); |
| | | |
| | | |
| | | //选中图标控件 |
| | | Button selectedIconBtn = new Button |
| | | { |
| | | X = Application.GetRealWidth(303), |
| | | Y = Application.GetRealHeight(11), |
| | | Width = Application.GetMinRealAverage(28), |
| | | Height = Application.GetMinRealAverage(28), |
| | | UnSelectedImagePath = "MusicIcon/noSelectedIcon.png", |
| | | SelectedImagePath = "MusicIcon/selectedIcon.png", |
| | | }; |
| | | PlayRow.AddChidren(selectedIconBtn); |
| | | |
| | | ///加大几点范围 |
| | | Button clickBtn = new Button |
| | | { |
| | | Height = Application.GetRealHeight(50), |
| | | Tag = slave.uuid.Replace("uuid:", ""), |
| | | }; |
| | | PlayRow.AddChidren(clickBtn); |
| | | |
| | | clickBtn.MouseUpEventHandler += (sender, e) => |
| | | { |
| | | clickBtn.IsSelected = !clickBtn.IsSelected; |
| | | selectedIconBtn.IsSelected = clickBtn.IsSelected; |
| | | var uuid = slaveList.Find((obj) => obj.uuid.Replace("uuid:", "") == clickBtn.Tag.ToString()); |
| | | if (selectedIconBtn.IsSelected) |
| | | { |
| | | if (uuid == null) |
| | | { |
| | | slaveList.Add(slave); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | if (uuid != null) |
| | | { |
| | | slaveList.Remove(slave); |
| | | } |
| | | } |
| | | }; |
| | | //线 |
| | | Button lineBtn = new Button |
| | | { |
| | | Y = PlayRow.Height - 1, |
| | | X = Application.GetRealWidth(20), |
| | | Width = Application.GetRealWidth(304), |
| | | Height = 1, |
| | | BackgroundColor = Color.LineColor, |
| | | }; |
| | | PlayRow.AddChidren(lineBtn); |
| | | } |
| | | confirmBtn.MouseUpEventHandler += (sender, e) => |
| | | { |
| | | if (slaveList.Count == 0) |
| | | { |
| | | new PublicAssmebly().TipMsgAutoClose("还没有选择解除组播放器", false); |
| | | return; |
| | | } |
| | | dialog.Close(); |
| | | |
| | | MusicMain.loading.Start("解除中..."); |
| | | bool _if = false; |
| | | System.Threading.Tasks.Task.Run(() => |
| | | { |
| | | try |
| | | { |
| | | for (int i = 0; i < slaveList.Count; i++) |
| | | { |
| | | var clientMusic = slaveList[i]; |
| | | if (null == SendMethod.OpenWeb("http://" + a31player.IPAddress + "/httpapi.asp?command=multiroom:SlaveKickout:" + clientMusic.ip)) |
| | | { |
| | | if (null == SendMethod.OpenWeb("http://" + a31player.IPAddress + "/httpapi.asp?command=multiroom:SlaveKickout:" + clientMusic.ip)) |
| | | { |
| | | |
| | | } |
| | | } |
| | | System.Threading.Thread.Sleep(2000);//等待2秒再发数据 |
| | | |
| | | } |
| | | DateTime dateTime = DateTime.Now; |
| | | while ((DateTime.Now - dateTime).TotalMilliseconds < 10 * 1000) |
| | | { |
| | | System.Threading.Thread.Sleep(1000); |
| | | try |
| | | { |
| | | var result = SendMethod.OpenWeb("http://" + a31player.IPAddress + "/httpapi.asp?command=multiroom:getSlaveList"); |
| | | if (result != null && result != "Failed") |
| | | { |
| | | var tmepSlaves = Newtonsoft.Json.JsonConvert.DeserializeObject<Slaves>(result); |
| | | if (tmepSlaves != null && tmepSlaves.slave_list.Count == 0) |
| | | { |
| | | _if = true;//解除成功 |
| | | A31MusicModel.Save(); |
| | | break; |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
| | | catch { } |
| | | } |
| | | } |
| | | catch { } |
| | | finally |
| | | { |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | MusicMain.loading.Hide(); |
| | | ///可以提示解除失败; |
| | | if (_if) |
| | | { |
| | | //解除成功才可以刷新界面 |
| | | MainPage.BasePageView.RemoveViewByTag("MusicMain"); |
| | | var musicMain = new MusicMain(); |
| | | MainPage.BasePageView.AddChidren(musicMain); |
| | | musicMain.Show(); |
| | | MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | |
| | | }; |
| | | } |
| | | } |
| | | [System.Serializable] |
| | | public class A31Wifi
{ |