陈嘉乐
2020-06-02 b7724b7823c1172f30178c3628218acef90f84b6
2020-06-2-1
8个文件已修改
331 ■■■■■ 已修改文件
.vs/HDL_APP_Project/xs/UserPrefs.xml 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.vs/HDL_APP_Project/xs/sqlite3/storage.ide 补丁 | 查看 | 原始文档 | blame | 历史
.vs/HDL_APP_Project/xs/sqlite3/storage.ide-shm 补丁 | 查看 | 原始文档 | blame | 历史
.vs/HDL_APP_Project/xs/sqlite3/storage.ide-wal 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/Music/A31MusicModel.cs 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/Music/MusicMain.cs 112 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/Music/SendMethod.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/Music/View/DialogView.cs 196 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.vs/HDL_APP_Project/xs/UserPrefs.xml
@@ -1,8 +1,11 @@
<Properties StartupConfiguration="{09712674-2A38-407B-B1E2-560B2C352F9A}|Default">
  <MonoDevelop.Ide.Workbench ActiveDocument="HDL_ON/UI/Music/MusicMain.cs">
    <Files>
      <File FileName="HDL_ON/UI/Music/MusicMain.cs" Line="70" Column="14" />
      <File FileName="HDL_ON/UI/Music/SendMethod.cs" Line="69" Column="24" />
      <File FileName="HDL_ON/UI/Music/SendMethod.cs" Line="457" Column="52" />
      <File FileName="../旧版本Music/MyMusic.cs" Line="754" Column="70" />
      <File FileName="HDL_ON/UI/Music/A31MusicModel.cs" Line="159" Column="15" />
      <File FileName="HDL_ON/UI/Music/View/DialogView.cs" Line="673" Column="1" />
      <File FileName="HDL_ON/UI/Music/MusicMain.cs" Line="1" Column="1" />
    </Files>
    <Pads>
      <Pad Id="ProjectPad">
@@ -17,6 +20,9 @@
                  <Node name="MusicMain.cs" selected="True" />
                </Node>
                <Node name="UI0-Public" expanded="True" />
                <Node name="UI2" expanded="True">
                  <Node name="2-Classification" expanded="True" />
                </Node>
              </Node>
            </Node>
            <Node name="HDL-ON_Android" expanded="True">
.vs/HDL_APP_Project/xs/sqlite3/storage.ide
Binary files differ
.vs/HDL_APP_Project/xs/sqlite3/storage.ide-shm
Binary files differ
.vs/HDL_APP_Project/xs/sqlite3/storage.ide-wal
Binary files differ
HDL_ON/UI/Music/A31MusicModel.cs
@@ -144,10 +144,13 @@
        /// </summary>
        public int ServerClientType;
        /// <summary>
        /// 表示从的播放器IP
        /// 记录主播放器IP
        /// </summary>
        public string ServerIP = string.Empty;
        public string MainPlayIP = string.Empty;
        /// <summary>
        /// 记录主播放器名称
        /// </summary>
        public string MainPlayName = string.Empty;
        public Slaves Slave = new Slaves();
HDL_ON/UI/Music/MusicMain.cs
@@ -12,6 +12,10 @@
        //public MusicListViewMain() {
        //    Frame = this;
        //}
        public MusicMain()
        {
            Tag = "MusicMain";
        }
        public override void RemoveFromParent()
        {
            base.RemoveFromParent();
@@ -103,7 +107,7 @@
                        if (obj == null)
                        {
                            ///这里要读取主从关系
                           // readServerOrClientMode(false);
                            //readServerOrClientMode();
                            A31MusicModel.Save();
                            return;
                        }
@@ -139,7 +143,7 @@
            {
                if (obj == null)
                {
                    //readServerOrClientMode(true);
                    readServerOrClientMode();
                    A31MusicModel.Save();
                    Application.RunOnMainThread(() =>
                    {
@@ -195,6 +199,8 @@
            musicView.songNameBtn.Text = a31player.A31PlayStatus.Title;
            musicView.musicNameBtn.Text = a31player.Name;
            musicView.regionBtn.TextID = StringId.region;
            EventHandler<MouseEventArgs> clickMergence = (sender, e) =>
            {
@@ -266,7 +272,14 @@
                    {
                        musicView.singerBtn.Text = a31player.A31PlayStatus.Artist;
                        musicView.songNameBtn.Text = a31player.A31PlayStatus.Title;
                        musicView.musicNameBtn.Text = a31player.Name;
                        if (a31player.ServerClientType == 1)
                        {
                            musicView.musicNameBtn.Text = a31player.MainPlayName;
                        }
                        else
                        {
                            musicView.musicNameBtn.Text = a31player.Name;
                        }
                        if (a31player.A31PlayStatus.status == "play")
                        {
                            musicView.playBtn.IsSelected = true;
@@ -281,7 +294,100 @@
        }
        /// <summary>
        /// 读取主从关系
        /// </summary>
        void readServerOrClientMode()
        {
            try
            {
                for (int i = 0; i < A31MusicModel.A31MusicModelList.Count; i++)
                {
                    var a31player = A31MusicModel.A31MusicModelList[i];
                    if (!a31player.IsOnLine)
                    {
                        continue;
                    }
                    try
                    {
                        a31player.ServerClientType = 0;
                        var result = SendMethod.OpenWeb("http://" + a31player.IPAddress + "/httpapi.asp?command=multiroom:getSlaveList");
                        if (result == null)
                        {
                            result = SendMethod.OpenWeb("http://" + a31player.IPAddress + "/httpapi.asp?command=multiroom:getSlaveList");
                        }
                        if (result != null)
                        {
                            a31player.Slave = Newtonsoft.Json.JsonConvert.DeserializeObject<Slaves>(result);
                        }
                    }
                    catch (Exception e)
                    {
                        var d = e.Message;
                    }
                }
                //分析主从关系
                for (int i = 0; i < A31MusicModel.A31MusicModelList.Count; i++)
                {
                    var a31player = A31MusicModel.A31MusicModelList[i];
                    if (!a31player.IsOnLine)
                    {
                        continue;
                    }
                    try
                    {
                        if (a31player.Slave != null && "0" != a31player.Slave.slaves)
                        {
                            a31player.ServerClientType = 1;//主的
                            string str = a31player.Name;
                            for (int j = 0; j < a31player.Slave.slave_list.Count; j++)
                            {
                                var slave = a31player.Slave.slave_list[j];
                                str = str + "+" + slave.name;
                                var tempA31Player = A31MusicModel.A31MusicModelList.Find((obj) => slave.uuid.Replace("uuid:", "") == obj.UniqueDeviceName);
                                if (tempA31Player == null)
                                {
                                    A31MusicModel.A31MusicModelList.Add(new A31MusicModel
                                    {
                                        ServerClientType = -1,//从的
                                        IPAddress = slave.ip,
                                        MainPlayIP = a31player.IPAddress,
                                        UniqueDeviceName = slave.uuid.Replace("uuid:", ""),
                                        Name = slave.name,
                                        IsCanShow = false,
                                        IsOnLine = false,
                                    });
                                }
                                //如果找到就更新为从的
                                else
                                {
                                    tempA31Player.ServerClientType = -1;//从的
                                    tempA31Player.IPAddress = slave.ip;
                                    tempA31Player.MainPlayIP = a31player.IPAddress;
                                    tempA31Player.Name = slave.name;
                                    tempA31Player.UniqueDeviceName = slave.uuid.Replace("uuid:", "");
                                    tempA31Player.IsCanShow = false;
                                    tempA31Player.IsOnLine = false;
                                }
                            }
                            a31player.MainPlayName = str;
                        }
                    }
                    catch (Exception e)
                    {
                        var ss = e.Message;
                    }
                }
            }
            catch (Exception e)
            {
                var ss = e.Message;
            }
        }
    }
HDL_ON/UI/Music/SendMethod.cs
@@ -155,7 +155,7 @@
                if (a31MusicModel.ServerClientType == -1)
                {
                    var result = OpenWeb("http://" + a31MusicModel.ServerIP + "/httpapi.asp?command=multiroom:getSlaveList");
                    var result = OpenWeb("http://" + a31MusicModel.MainPlayIP + "/httpapi.asp?command=multiroom:getSlaveList");
                    if (result != null)
                    {
                        var slaves = Newtonsoft.Json.JsonConvert.DeserializeObject<Slaves>(result);
@@ -460,7 +460,7 @@
                {
                    if (a31player.ServerClientType == -1)
                    {
                        new System.Net.WebClient().DownloadData(new Uri("http://" + a31player.ServerIP + "/httpapi.asp?command=multiroom:SlaveVolume:" + a31player.IPAddress + ":" + volume));
                        new System.Net.WebClient().DownloadData(new Uri("http://" + a31player.MainPlayIP + "/httpapi.asp?command=multiroom:SlaveVolume:" + a31player.IPAddress + ":" + volume));
                    }
                    else if (a31player.ServerClientType == 1)
                    {
HDL_ON/UI/Music/View/DialogView.cs
@@ -311,7 +311,7 @@
                Width = Application.GetRealWidth(344),
            };
            dialogFra.AddChidren(verticalScrolViewLayout);
            var playList = new List<A31MusicModel>();
            var playList1 = new List<A31MusicModel>();
            for (int i = 0; i < A31MusicModel.A31MusicModelList.Count; i++)
            {
                var player = A31MusicModel.A31MusicModelList[i];
@@ -367,19 +367,19 @@
                {
                    clickBtn.IsSelected = !clickBtn.IsSelected;
                    selectedIconBtn.IsSelected = clickBtn.IsSelected;
                    var musicPlayer = playList.Find((c) => c.UniqueDeviceName == player.UniqueDeviceName);
                    var musicPlayer = playList1.Find((c) => c.UniqueDeviceName == player.UniqueDeviceName);
                    if (selectedIconBtn.IsSelected)
                    {
                        if (musicPlayer == null)
                        {
                            playList.Add(player);
                            playList1.Add(player);
                        }
                    }
                    else
                    {
                        if (musicPlayer != null)
                        {
                            playList.Remove(player);
                            playList1.Remove(player);
                        }
                    }
                };
@@ -396,20 +396,47 @@
            }
            confirmBtn.MouseUpEventHandler += (sender, e) =>
            {
                if (playList.Count <= 1)
                if (playList1.Count <= 1)
                {
                    new PublicAssmebly().TipMsgAutoClose("至少选中两个以上播放器", false);
                    return;
                }
                PlayerView(dialog, playList);
                var playList2 = new List<A31MusicModel>();
                for (int i = 0; i < playList1.Count; i++)
                {
                    var musics = playList1[i];
                    if (musics.A31PlayStatus.playSource == "play")
                    {
                        playList2.Add(musics);
                    }
                }
                if (playList2.Count == 0)
                {
                    PlayerView(dialog, playList1, playList1);
                }
                else if (playList2.Count == 1)
                {
                    dialog.Close();
                    var player = playList2[0];
                    Threading(player, playList1);
                }
                else
                {
                    PlayerView(dialog, playList1, playList2);
                }
            };
        }
        /// <summary>
        /// 选中主播放器的界面
        /// </summary>
        /// <param name="musicList"></param>
        void PlayerView(Dialog dialogF ,List<A31MusicModel> musicList)
        /// <param name="musicList1"></param>
        ///  /// <param name="musicList2">显示播放器列表</param>
        void PlayerView(Dialog dialogF, List<A31MusicModel> musicList1, List<A31MusicModel> musicList2)
        {
            //主控件
            Dialog dialog = new Dialog()
            {
@@ -472,7 +499,6 @@
                IsBold = true,
            };
            topFra.AddChidren(txetBtn);
            //确认控件
            Button confirmBtn = new Button
            {
@@ -486,10 +512,7 @@
                TextSize = TextSize.Text14,
            };
            topFra.AddChidren(confirmBtn);
            confirmBtn.MouseUpEventHandler += (sender, e) =>
            {
            };
            VerticalScrolViewLayout verticalScrolViewLayout = new VerticalScrolViewLayout
            {
                Y = Application.GetRealHeight(50),
@@ -498,10 +521,10 @@
            };
            dialogFra.AddChidren(verticalScrolViewLayout);
            //记录选中状态
            Button selectedBtn = new Button() { Tag="No"};
            for (int i = 0; i < musicList.Count; i++)
            Button selectedBtn = new Button() { Name = "No" };
            for (int i = 0; i < musicList2.Count; i++)
            {
                var player = musicList[i];
                var player = musicList2[i];
                RowLayout addFlieRow = new RowLayout
                {
                    Height = Application.GetRealHeight(50),
@@ -532,6 +555,7 @@
                    Height = Application.GetMinRealAverage(28),
                    UnSelectedImagePath = "MusicIcon/noSelectedIcon.png",
                    SelectedImagePath = "MusicIcon/selectedIcon.png",
                    Tag = player,
                };
                addFlieRow.AddChidren(selectedIconBtn);
                ///加大几点范围
@@ -543,8 +567,8 @@
                clickBtn.MouseUpEventHandler += (sender, e) =>
                {
                    selectedBtn.IsSelected = false;
                    selectedBtn.Tag = "Yes";
                    selectedBtn = selectedIconBtn;
                    selectedBtn.Name = "Yes";
                    selectedBtn.IsSelected = true;
                };
                //线
@@ -561,15 +585,153 @@
            confirmBtn.MouseUpEventHandler += (sender, e) =>
            {
                if (selectedBtn.Tag.ToString() == "No")
                if (selectedBtn.Name.ToString() == "No")
                {
                    new PublicAssmebly().TipMsgAutoClose("还没选中播放器", false);
                    return;
                }
                dialogF.Close();
                dialog.Close();
                var serverMusic = selectedBtn.Tag as A31MusicModel;
                Threading(serverMusic, musicList1);
            };
        }
        /// <summary>
        /// 发送组合命令逻辑处理的方法
        /// </summary>
        /// <param name="serverMusic">主播放器</param>
        /// <param name="musicList1"></param>
        void Threading(A31MusicModel serverMusic, List<A31MusicModel> musicList1)
        {
            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");
                    if (statusEx == null)
                    {
                        statusEx = SendMethod.OpenWeb("http://" + IP + "/httpapi.asp?command=getStatusEx");
                    }
                    if (statusEx == null)
                    {
                        return;
                    }
                    var serverIfon = Newtonsoft.Json.JsonConvert.DeserializeObject<A31Wifi>(statusEx);
                    if (serverIfon == null)
                    {
                        return;
                    }
                    string ssid = "";
                    foreach (var b in serverIfon.ssid)
                    {
                        ssid += System.Convert.ToString(b, 16).ToUpper().Length < 2 ? "0" + System.Convert.ToString(b, 16).ToUpper() : System.Convert.ToString(b, 16).ToUpper();
                    }
                    System.Threading.Thread.Sleep(1000);
                    for (int i = 0; i < musicList1.Count; i++)
                    {
                        var clientMusic = musicList1[i];
                        if (clientMusic.UniqueDeviceName == serverMusic.UniqueDeviceName)
                        {
                            //过滤掉主播放器;
                            continue;
                        }
                        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)
                    {
                        System.Threading.Thread.Sleep(1000);
                        try
                        {
                            var result = SendMethod.OpenWeb("http://" + serverMusic.IPAddress + "/httpapi.asp?command=multiroom:getSlaveList");
                            if (result != null)
                            {
                                var tmepSlaves = Newtonsoft.Json.JsonConvert.DeserializeObject<Slaves>(result);
                                if (tmepSlaves != null && tmepSlaves.slave_list != null)
                                {
                                    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;
                                            //过滤掉主播放器;
                                            continue;
                                        }
                                        var slave_Ifon = tmepSlaves.slave_list.Find((obj) => obj.uuid.Replace("uuid:", "") == music.UniqueDeviceName);
                                        if (null != slave_Ifon)
                                        {
                                            str = str + "+" + slave_Ifon.name;
                                            //已经添加成功
                                            music.ServerClientType = -1;
                                            music.IsCanShow = false;
                                            music.IsOnLine = false;
                                            music.IPAddress = slave_Ifon.ip;
                                            music.MainPlayIP = serverMusic.IPAddress;
                                        }
                                    }
                                    serverMusic.MainPlayName = str;
                                    A31MusicModel.Save();
                                    break;
                                }
                            }
                        }
                        catch { }
                    }
                }
                catch { }
                finally
                {
                    Application.RunOnMainThread(() =>
                    {
                        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
    {
        public string ssid;
        public string WifiChannel;
        public string uuid;
        public string eth2;
        public string ra0;
        public string upnp_uuid;
        public string firmware;
        public string language;
        public string MAC;
        public string Release;
        public string psk;
        public string SSIDStrategy;
        public string netstat;
        public string apcli0;

    }
}