using System; using System.Collections.Generic; using Shared; using Shared.IO; using System.Net; using HDL_ON.Entity; namespace HDL_ON.UI.Music { public class MusicMain : FrameLayout { /// /// MusicMain对象构造函数 /// public MusicMain() { Tag = "MusicMain"; //进来音乐列表界面先移除之前线程; A31MusicModel.RemoveListThread(); } /// /// 重写RemoveFromParent方法 /// public override void RemoveFromParent() { base.RemoveFromParent(); clearA31Threads(); A31MusicModel.ReadMusicStates();//进来没有音乐被收藏过,退出有音乐被收藏过 } /// /// 创建线程列表 /// static List threadLists = new List(); /// /// 移除线程 /// static void clearA31Threads() { var threads = threadLists.FindAll((obj) => { return obj.Name == "A31"; }); foreach (var thread in threads) { try { threadLists.Remove(thread); if (thread.IsAlive) { ///强制线程抛异常 thread.Abort(); } } catch (Exception e) { MainPage.Log("clearA31Threads error : " + e.Message); } } } /// /// 显示加载界面 /// public static Loading loading = new Loading(); /// /// 定义全局对象 /// VerticalRefreshLayout verticalRefresh; /// /// 为了音乐刷新状态定义全局对象 /// MusicView musicView = new MusicView(); public void Show() { #region 界面布局 this.BackgroundColor = MusicColor.ViewColor; var topView = new TopView(); this.AddChidren(topView.TopFLayoutView()); topView.topNameBtn.TextID = StringId.a31Music; topView.clickBackBtn.MouseUpEventHandler += (sender, e) => { RemoveFromParent(); }; verticalRefresh = new VerticalRefreshLayout { Y = topView.fLayout.Bottom, Height = Application.GetRealHeight(H_W.H - H_W.T_Height), }; this.AddChidren(verticalRefresh); #endregion verticalRefresh.BeginHeaderRefreshingAction += () => { SeachMusic(); }; this.AddChidren(loading); SeachMusic(); } /// /// 刷新播放器列表 /// void SeachMusic() { Application.RunOnMainThread(() => { verticalRefresh.RemoveAll(); for (int i = 0; i < SendMethod.sendMethod.GetMusicList.Count; i++) { var playerFunction = SendMethod.sendMethod.GetMusicList[i]; if (!playerFunction.online) { //过滤掉不在线的音乐播放器 continue; } MusicListView(playerFunction); } }); } /// /// 显示音乐列表的方法 /// void MusicListView(Function player) { musicView.View(verticalRefresh); musicView.singerBtn.Text = player.GetAttrState("song_name"); musicView.songNameBtn.Text = player.GetAttrState("song_name"); musicView.musicNameBtn.Text = player.name; //if (player.IsEnd) //{ // musicView.muiscFl.Height = Application.GetRealHeight(12 + 139 + 12); //} musicView.collectIconBtn.MouseUpEventHandler += (sender, e) => { musicView.collectIconBtn.IsSelected = !musicView.collectIconBtn.IsSelected; if (musicView.collectIconBtn.IsSelected) { player.collect = true; } else { player.collect = false; } }; EventHandler clickMergence = (sender, e) => { //if (player.ServerClientType == 0) //{ // new View.DialogView { }.PlayMergence(player); //} //else if (player.ServerClientType == 1) //{ // new View.DialogView { }.DetachPlayMergence(player); //} }; musicView.mergeBjBtn.MouseUpEventHandler += clickMergence; musicView.mergeBtn.MouseUpEventHandler += clickMergence; musicView.mergeIconBtn.MouseUpEventHandler += clickMergence; EventHandler clickPlayView = (sender, e) => { var a31PlayMusicPage = new A31PlayMusicPage(); MainPage.BasePageView.AddChidren(a31PlayMusicPage); a31PlayMusicPage.Show(); MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; }; musicView.musicIfonFl.MouseUpEventHandler += clickPlayView; musicView.clickBtn.MouseUpEventHandler += clickPlayView;// musicView.singerBtn.MouseUpEventHandler += clickPlayView; musicView.songNameBtn.MouseUpEventHandler += clickPlayView;// musicView.musicNameBtn.MouseUpEventHandler += clickPlayView; musicView.regionBtn.MouseUpEventHandler += clickPlayView;// ///上一曲点击事件 musicView.prevBtn.MouseDownEventHandler += (sender, e) => { musicView.prevBtn.IsSelected = true; Dictionary dic = new Dictionary(); dic.Add("song_step", "up"); SendMethod.sendMethod.SendControlCommand(player, dic); }; musicView.prevBtn.MouseUpEventHandler += (sender, e) => { musicView.prevBtn.IsSelected = false; }; ///暂停/播放点击事件 musicView.playBtn.MouseDownEventHandler += (sender, e) => { string status = "off"; if (musicView.playBtn.IsSelected) { musicView.playBtn.IsSelected = false; status = "off"; } else { musicView.playBtn.IsSelected = true; status = "on"; } Dictionary dic = new Dictionary(); dic.Add("on_off", status); SendMethod.sendMethod.SendControlCommand(player, dic); }; ///下一曲点击事件 musicView.nextBtn.MouseDownEventHandler += (sender, e) => { musicView.nextBtn.IsSelected = true; Dictionary dic = new Dictionary(); dic.Add("song_step", "down"); SendMethod.sendMethod.SendControlCommand(player, dic); }; musicView.nextBtn.MouseUpEventHandler += (sender, e) => { musicView.nextBtn.IsSelected = false; }; var musicThread = new System.Threading.Thread(() => { while (true) { System.Threading.Thread.Sleep(1000); if (!player.online) { continue; } //SendMethod.ReadStatus(player); SendMethod.sendMethod.RefreshDeviceStatus(player,new List { player.deviceId }); Application.RunOnMainThread(() => { //musicView.singerBtn.Text = player.A31PlayStatus.Artist; //musicView.songNameBtn.Text = player.A31PlayStatus.Title; //musicView.musicNameBtn.Text = new View.DialogView { }.NamePlayer(player); //if (player.A31PlayStatus.status == "play") //{ // musicView.playBtn.IsSelected = true; //} //else //{ // musicView.playBtn.IsSelected = false; //} //musicView.regionBtn.Text = player.GetRoomListName(); //if (player.ServerClientType == 1) //{ // if (player.MainPlayCollection) // { // musicView.collectIconBtn.IsSelected = true; // } // else // { // musicView.collectIconBtn.IsSelected = false; // } //} //else //{ // if (player.collect) // { // musicView.collectIconBtn.IsSelected = true; // } // else // { // musicView.collectIconBtn.IsSelected = false; // } //} }); } }) { IsBackground = true, Name = "A31" }; musicThread.Start(); threadLists.Add(musicThread); } /// ///指定刷新界面 /// /// 判断字符 public void RefreshView(string strView) { Application.RunOnMainThread(() => { try { for (int i = MainPage.BasePageView.ChildrenCount - 1; 0 <= i; i--) { var view = MainPage.BasePageView.GetChildren(i); if (strView == view.Tag.ToString()) { if (view.GetType() == typeof(MusicMain)) { //musicView.singerBtn.Text = player.A31PlayStatus.Artist; //musicView.songNameBtn.Text = player.A31PlayStatus.Title; //musicView.musicNameBtn.Text = new View.DialogView { }.NamePlayer(player); //if (player.A31PlayStatus.status == "play") //{ // musicView.playBtn.IsSelected = true; //} //else //{ // musicView.playBtn.IsSelected = false; //} //musicView.regionBtn.Text = player.GetRoomListName(); //if (player.ServerClientType == 1) //{ // if (player.MainPlayCollection) // { // musicView.collectIconBtn.IsSelected = true; // } // else // { // musicView.collectIconBtn.IsSelected = false; // } //} //else //{ // if (player.collect) // { // musicView.collectIconBtn.IsSelected = true; // } // else // { // musicView.collectIconBtn.IsSelected = false; // } //} } } } } catch { } }); } } }