wei
2021-10-28 1460cb4a3c4e1ec3e9272b8bf0583d13012578f9
还原音乐功能
3个文件已修改
540 ■■■■■ 已修改文件
HDL_ON/UI/UI2/FuntionControlView/Music/A31PlayMusicPage.cs 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Music/MusicMain.cs 427 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Music/SendMethod.cs 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Music/A31PlayMusicPage.cs
@@ -97,8 +97,6 @@
            ///切换播放模式点击事件;
            playView.playOrderBtn.MouseUpEventHandler += (sender, e) =>
             {
                 //single/single_cycle/order/list_cycle/random
                 string modeValueString = string.Empty;
                 string msg = Language.StringByID(StringId.switchTo);
                 switch (A31MusicModel.Current.A31PlayStatus.loop)
                 {
@@ -121,9 +119,8 @@
                         break;
                 }
                 new PublicAssmebly().TipMsgAutoClose(msg, false,1000);
                 Dictionary<string, string> dic = new Dictionary<string, string>();
                 dic.Add("mode",modeValueString);
                 //SendMethod.sendMethod.SendControlCommand(,dic);
                 string url = "http://" + A31MusicModel.Current.IPAddress + "/httpapi.asp?command=setPlayerCmd:" + "loopmode:" + A31MusicModel.Current.A31PlayStatus.loop;
                 SendMethod.SendCommand(url);
             };
            ///添加喜爱点击事件;
            playView.loveBtn.MouseUpEventHandler += (sender, e) =>
HDL_ON/UI/UI2/FuntionControlView/Music/MusicMain.cs
@@ -3,8 +3,6 @@
using Shared;
using Shared.IO;
using System.Net;
using HDL_ON.Entity;
namespace HDL_ON.UI.Music
{
    public class MusicMain : FrameLayout
@@ -58,22 +56,19 @@
        /// <summary>
        ///  显示加载界面
        /// </summary>
        public static Loading loading = new Loading();
        public  static Loading loading = new Loading();
        /// <summary>
        /// 定义全局对象
        /// </summary>
        VerticalRefreshLayout verticalRefresh;
        /// <summary>
        /// 为了音乐刷新状态定义全局对象
        /// </summary>
        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.topNameBtn.TextID =StringId.a31Music;
            topView.clickBackBtn.MouseUpEventHandler += (sender, e) =>
            {
                RemoveFromParent();
@@ -89,71 +84,200 @@
            verticalRefresh.BeginHeaderRefreshingAction += () =>
            {
                SeachMusic();
                SeachMusic(false);
            };
            this.AddChidren(loading);
            SeachMusic();
            if (A31MusicModel.A31MusicModelList.Count == 0)
            {
                SeachMusic(true);
            }
            else
            {
                clearA31Threads();
               //verticalRefresh.RemoveAll();
                for (int i = 0; i < A31MusicModel.A31MusicModelList.Count; i++)
                {
                    var a31player = A31MusicModel.A31MusicModelList[i];
                    ///这个状态是之前保存的,加载完成后要标记为不在线,后面再读取正确的状态
                    if (!a31player.IsCanShow)
                    {
                        continue;
                    }
                    if (A31MusicModel.A31MusicModelList.Count - 1 == i)
                    {
                        a31player.IsEnd = true;
                    }
                    else
                    {
                        a31player.IsEnd = false;
                    }
                    ///加载界面时默认不在线
                    ///这里标记是为了不读取不在线播放器状态
                    a31player.IsOnLine = false;
                    MusicListView(a31player);
                }
                ///读取正确的信息,包括IP和端口及名称
                SendMethod.Seach((obj) =>
                {
                    try
                    {
                        if (obj == null)
                        {
                            ///这里要读取主从关系
                            readServerOrClientMode();
                            A31MusicModel.Save();
                            return;
                        }
                        var a31MusicModel = A31MusicModel.A31MusicModelList.Find((music) => music.UniqueDeviceName == obj.UniqueDeviceName);
                        if (a31MusicModel != null)
                        {
                            a31MusicModel.IPAddress = obj.IPAddress;
                            a31MusicModel.Port = obj.Port;
                            a31MusicModel.Name = obj.Name;
                            a31MusicModel.IsCanShow = true;
                            a31MusicModel.IsOnLine = true;
                        }
                    }
                    catch (Exception e) { MainPage.Log(e.Message); }
                });
            }
        }
        /// <summary>
        /// 刷新播放器列表
        /// </summary>
        void SeachMusic()
        /// <param name="Yes">是否显示刷新图标</param>
        void SeachMusic(bool Yes = false)
        {
            Application.RunOnMainThread(() =>
            for (int i = 0; i < A31MusicModel.A31MusicModelList.Count; i++)
            {
                verticalRefresh.RemoveAll();
                for (int i = 0; i < SendMethod.sendMethod.GetMusicList.Count; i++)
                var a31player = A31MusicModel.A31MusicModelList[i];
                a31player.IsCanShow = false;
                a31player.IsOnLine = false;
            }
            if (Yes)
            {
                //为了第一次进来log一下;
                loading.Start();
            }
            SendMethod.Seach((obj) =>
            {
                if (obj == null)
                {
                    var playerFunction = SendMethod.sendMethod.GetMusicList[i];
                    if (!playerFunction.online)
                    readServerOrClientMode();
                    A31MusicModel.Save();
                    if (!Yes)
                    {
                        //过滤掉不在线的音乐播放器
                        continue;
                        ///等待跑完在关闭
                        verticalRefresh.EndHeaderRefreshing();
                    }
                    MusicListView(playerFunction);
                }
                    Application.RunOnMainThread(() =>
                    {
                        if (Yes)
                        {
                            //为了第一次进来log一下;
                            loading.Hide();
                        }
                        verticalRefresh.RemoveAll();
                        for (int i = 0; i < A31MusicModel.A31MusicModelList.Count; i++)
                        {
                            var a31player = A31MusicModel.A31MusicModelList[i];
                            //这个状态是之前保存的,加载完成后要标记为不在线,后面再读取正确的状态
                            if (!a31player.IsCanShow)
                            {
                                continue;
                            }
                            if (A31MusicModel.A31MusicModelList.Count - 1 == i)
                            {
                                a31player.IsEnd = true;
                            }
                            else
                            {
                                a31player.IsEnd = false;
                            }
                            MusicListView(a31player);
                        }
                       //A31MusicModel.ReadMusicStates();
                    });
                    return;
                }
                var a31MusicModel = A31MusicModel.A31MusicModelList.Find((music) => { return music.UniqueDeviceName == obj.UniqueDeviceName; });
                if (a31MusicModel == null)
                {
                    //不是我们支持的品牌不支持
                    if (obj.Name != null)
                    {
                        obj.sid = "030101123456780909020123AABB" + obj.UniqueDeviceName;
                        A31MusicModel.A31MusicModelList.Add(obj);
                    }
                }
                else
                {
                    a31MusicModel.IPAddress = obj.IPAddress;
                    a31MusicModel.Port = obj.Port;
                    a31MusicModel.Name = obj.Name;
                    a31MusicModel.IsCanShow = true;
                    a31MusicModel.IsOnLine = true;
                }
            });
        }
        /// <summary>
        /// 显示音乐列表的方法
        /// </summary>
        void MusicListView(Function player)
        void MusicListView(A31MusicModel a31player)
        {
            MusicView musicView = new MusicView();
            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.singerBtn.Text = a31player.A31PlayStatus.Artist;
            musicView.songNameBtn.Text = a31player.A31PlayStatus.Title;
            musicView.musicNameBtn.Text = new View.DialogView { }.NamePlayer(a31player);
            if (a31player.IsEnd)
            {
                musicView.muiscFl.Height = Application.GetRealHeight(12 + 139 + 12);
            }
            musicView.collectIconBtn.MouseUpEventHandler += (sender, e) =>
            {
                musicView.collectIconBtn.IsSelected = !musicView.collectIconBtn.IsSelected;
                if (musicView.collectIconBtn.IsSelected)
                if (a31player.ServerClientType == 1)
                {
                    player.collect = true;
                    if (musicView.collectIconBtn.IsSelected)
                    {
                        a31player.MainPlayCollection = true;
                    }
                    else
                    {
                        a31player.MainPlayCollection = false;
                    }
                }
                else
                {
                    player.collect = false;
                    if (musicView.collectIconBtn.IsSelected)
                    {
                        a31player.collect = true;
                    }
                    else
                    {
                        a31player.collect = false;
                    }
                }
                A31MusicModel.Save();
            };
            EventHandler<MouseEventArgs> clickMergence = (sender, e) =>
            {
                //if (player.ServerClientType == 0)
                //{
                //    new View.DialogView { }.PlayMergence(player);
                //}
                //else if (player.ServerClientType == 1)
                //{
                //    new View.DialogView { }.DetachPlayMergence(player);
                //}
                if (a31player.ServerClientType == 0)
                {
                    new View.DialogView { }.PlayMergence(a31player);
                }
                else if (a31player.ServerClientType == 1)
                {
                    new View.DialogView { }.DetachPlayMergence(a31player);
                }
            };
            musicView.mergeBjBtn.MouseUpEventHandler += clickMergence;
            musicView.mergeBtn.MouseUpEventHandler += clickMergence;
@@ -161,6 +285,7 @@
            EventHandler<MouseEventArgs> clickPlayView = (sender, e) =>
            {
                A31MusicModel.Current = a31player;//当前播放器
                var a31PlayMusicPage = new A31PlayMusicPage();
                MainPage.BasePageView.AddChidren(a31PlayMusicPage);
                a31PlayMusicPage.Show();
@@ -177,9 +302,7 @@
            musicView.prevBtn.MouseDownEventHandler += (sender, e) =>
            {
                musicView.prevBtn.IsSelected = true;
                Dictionary<string, string> dic = new Dictionary<string, string>();
                dic.Add("song_step", "up");
                SendMethod.sendMethod.SendControlCommand(player, dic);
                SendMethod.Previous(a31player);
            };
            musicView.prevBtn.MouseUpEventHandler += (sender, e) =>
            {
@@ -188,28 +311,24 @@
            ///暂停/播放点击事件
            musicView.playBtn.MouseDownEventHandler += (sender, e) =>
            {
                string status = "off";
                if (musicView.playBtn.IsSelected)
                {
                    musicView.playBtn.IsSelected = false;
                    status = "off";
                    SendMethod.Pause(a31player);
                    a31player.A31PlayStatus.status = "pause";
                }
                else
                {
                    musicView.playBtn.IsSelected = true;
                    status = "on";
                    SendMethod.Play(a31player);
                    a31player.A31PlayStatus.status = "play";
                }
                Dictionary<string, string> dic = new Dictionary<string, string>();
                dic.Add("on_off", status);
                SendMethod.sendMethod.SendControlCommand(player, dic);
            };
            ///下一曲点击事件
            musicView.nextBtn.MouseDownEventHandler += (sender, e) =>
            {
                musicView.nextBtn.IsSelected = true;
                Dictionary<string, string> dic = new Dictionary<string, string>();
                dic.Add("song_step", "down");
                SendMethod.sendMethod.SendControlCommand(player, dic);
                SendMethod.Next(a31player);
            };
            musicView.nextBtn.MouseUpEventHandler += (sender, e) =>
            {
@@ -221,49 +340,47 @@
                while (true)
                {
                    System.Threading.Thread.Sleep(1000);
                    if (!player.online)
                    if (!a31player.IsOnLine)
                    {
                        continue;
                    }
                    //SendMethod.ReadStatus(player);
                     SendMethod.sendMethod.RefreshDeviceStatus(player,new List<string> { player.deviceId });
                    SendMethod.ReadStatus(a31player);
                    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;
                        //    }
                        //}
                        musicView.singerBtn.Text = a31player.A31PlayStatus.Artist;
                        musicView.songNameBtn.Text = a31player.A31PlayStatus.Title;
                        musicView.musicNameBtn.Text = new View.DialogView { }.NamePlayer(a31player);
                        if (a31player.A31PlayStatus.status == "play")
                        {
                            musicView.playBtn.IsSelected = true;
                        }
                        else
                        {
                            musicView.playBtn.IsSelected = false;
                        }
                        musicView.regionBtn.Text = a31player.GetRoomListName();
                        if (a31player.ServerClientType == 1)
                        {
                            if (a31player.MainPlayCollection)
                            {
                                musicView.collectIconBtn.IsSelected = true;
                            }
                            else
                            {
                                musicView.collectIconBtn.IsSelected = false;
                            }
                        }
                        else
                        {
                            if (a31player.collect)
                            {
                                musicView.collectIconBtn.IsSelected = true;
                            }
                            else
                            {
                                musicView.collectIconBtn.IsSelected = false;
                            }
                        }
                    });
                }
            })
@@ -271,67 +388,99 @@
            musicThread.Start();
            threadLists.Add(musicThread);
        }
        /// <summary>
        ///指定刷新界面
        /// 读取主从关系
        /// </summary>
        /// <param name="strView">判断字符</param>
        public void RefreshView(string strView)
        void readServerOrClientMode()
        {
            Application.RunOnMainThread(() =>
            try
            {
                try
                for (int i = 0; i < A31MusicModel.A31MusicModelList.Count; i++)
                {
                    for (int i = MainPage.BasePageView.ChildrenCount - 1; 0 <= i; i--)
                    var a31player = A31MusicModel.A31MusicModelList[i];
                    if (!a31player.IsOnLine)
                    {
                        var view = MainPage.BasePageView.GetChildren(i);
                        if (strView == view.Tag.ToString())
                        continue;
                    }
                    try
                    {
                        a31player.ServerClientType = 0;
                        var result = SendMethod.OpenWeb("http://" + a31player.IPAddress + "/httpapi.asp?command=multiroom:getSlaveList");
                        if (result == null && result == "Failed")
                        {
                            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;
                                //    }
                                //}
                            }
                            result = SendMethod.OpenWeb("http://" + a31player.IPAddress + "/httpapi.asp?command=multiroom:getSlaveList");
                        }
                        if (result != null && result != "Failed")
                        {
                            a31player.Slave = Newtonsoft.Json.JsonConvert.DeserializeObject<Slaves>(result);
                        }
                    }
                    catch (Exception e)
                    {
                        var d = e.Message;
                    }
                }
                catch { }
            });
                //分析主从关系
                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
                                    {
                                        sid = "030101123456780909020123AABB" + slave.uuid.Replace("uuid:", ""),
                                        ServerClientType = -1,//从的
                                        IPAddress = slave.ip,
                                        MainPlayIP = a31player.IPAddress,
                                        UniqueDeviceName = slave.uuid.Replace("uuid:", ""),
                                        Name = slave.name,
                                        IsCanShow = false,
                                        IsOnLine = false,//true作用为了读取从播放器的音量
                                    });
                                }
                                //如果找到就更新为从的
                                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;//true作用为了读取从播放器的音量
                                }
                            }
                            a31player.MainPlayName = str;
                        }
                    }
                    catch (Exception e)
                    {
                        var ss = e.Message;
                    }
                }
            }
            catch { }
        }
    }
}
HDL_ON/UI/UI2/FuntionControlView/Music/SendMethod.cs
@@ -4,28 +4,12 @@
using System.Net.Sockets;
using System.Security;
using System.Text;
using HDL_ON.DAL.Server;
using HDL_ON.Entity;
using Shared;
namespace HDL_ON.UI.Music
{
    public class SendMethod
    {
        private static SendMethod m_sendMethod=null;
        public static SendMethod sendMethod
        {
            get
            {
                if (m_sendMethod == null)
                {
                    m_sendMethod = new SendMethod();
                }
                return m_sendMethod;
            }
        }
        /// <summary>
        ///搜索A31音乐播放器
        /// </summary>
@@ -225,7 +209,7 @@
                a31MusicModel.A31PlayStatus.loop = se.SearchForTextOfTag("LoopMode");
                a31MusicModel.A31PlayStatus.Source = se.SearchForTextOfTag("PlayMedium");
                a31MusicModel.A31PlayStatus.playSource = se.SearchForTextOfTag("TrackSource");
                a31MusicModel.A31PlayStatus.TrackURL = se.SearchForTextOfTag("TrackURI").Replace("&", "&amp;amp;");
                a31MusicModel.A31PlayStatus.TrackURL = se.SearchForTextOfTag("TrackURI").Replace("&", "&amp;amp;");
            }
            catch (Exception ex)
@@ -479,8 +463,7 @@
        /// <param name="volume">Volume.</param>
        public static void ControlVolume(int volume, A31MusicModel a31player)
        {
            System.Threading.Tasks.Task.Run(() =>
            {
            System.Threading.Tasks.Task.Run(() => {
                A31MusicModel.ProgressDateTime = DateTime.Now;
                try
                {
@@ -543,7 +526,7 @@
                musicInfo.URL = track.SearchForTextOfTag("URL").Replace("&", "&amp;amp;");
                var metadata = track.SearchForTextOfTag("Metadata").Replace("&", "&amp;");
                var item = SecurityElement.FromString(metadata).SearchForChildByTag("item");
                musicInfo.Title = item.SearchForTextOfTag("dc:title").Replace("&", "&amp;amp;");
                musicInfo.Title = item.SearchForTextOfTag("dc:title").Replace("&", "&amp;amp;");
                musicInfo.Artist = item.SearchForTextOfTag("upnp:artist").Replace("&", "&amp;amp;");
                musicInfo.Album = item.SearchForTextOfTag("upnp:album").Replace("&", "&amp;amp;");
                musicInfo.Duration = item.SearchForTextOfTag("res");
@@ -614,7 +597,7 @@
        /// <summary>
        /// 获取当前播放的列表
        /// </summary>
        public static string GetCurrentPlayList(A31MusicModel a31player)
        public static  string GetCurrentPlayList(A31MusicModel a31player)
        {
            System.Text.StringBuilder getPlayList = new System.Text.StringBuilder();
            getPlayList.AppendLine("<?xml version=\"1.0\"encoding=\"utf-8\"?>");
@@ -673,7 +656,7 @@
        /// <param name="musicInfo">播放音乐</param>
        /// <param name="listName">列表名称</param>
        /// <param name="musicList">推送列表(默认推50首)</param>
        public static void PushList(MusicInfo musicInfo, string listName, List<MusicInfo> musicList, A31MusicModel a31player, string musicSource)
        public  static void PushList(MusicInfo musicInfo, string listName, List<MusicInfo> musicList, A31MusicModel a31player,string musicSource)
        {
            //最大发送的条数
@@ -756,12 +739,10 @@
                sb.AppendLine("&amp;lt;dc:title&amp;gt;" + tempMusicInfo.Title + "&amp;lt;/dc:title&amp;gt;");
                sb.AppendLine("&amp;lt;dc:creator&amp;gt;DJ Sanny J&amp;lt;/dc:creator&amp;gt;");
                if (musicSource == "我的列表")
                {
                if (musicSource== "我的列表") {
                    sb.AppendLine("&amp;lt;upnp:artist&amp;gt;" + listName + "&amp;lt;/upnp:artist&amp;gt;");
                }
                else
                {
                else {
                    sb.AppendLine("&amp;lt;upnp:artist&amp;gt;" + tempMusicInfo.Artist + "&amp;lt;/upnp:artist&amp;gt;");
                }
                sb.AppendLine("&amp;lt;upnp:album&amp;gt;" + tempMusicInfo.Album + "&amp;lt;/upnp:album&amp;gt;");
@@ -797,7 +778,7 @@
            Play(a31player.IPAddress, a31player.Port, playString.ToString());
        }
        static void SendMusicLists(string ip, int port, string soapAction, string listInfo)
       static void SendMusicLists(string ip, int port, string soapAction, string listInfo)
        {
            System.Net.WebClient webClient = new System.Net.WebClient();
            webClient.Headers.Add("SOAPACTION", "\"urn:schemas-wiimu-com:service:PlayQueue:1#" + soapAction + "\"");
@@ -807,13 +788,13 @@
                byte[] recevieBytes = webClient.UploadData(new Uri("http://" + ip + ":" + port + "/upnp/control/PlayQueue1"), "POST", System.Text.Encoding.UTF8.GetBytes(listInfo));
                var s = System.Text.Encoding.UTF8.GetString(recevieBytes, 0, recevieBytes.Length);
            }
            catch (Exception e)
            catch(Exception e)
            {
                var d = e.Message;
            }
        }
        static void Play(string ip, int port, string info)
       static void Play(string ip, int port, string info)
        {
            System.Net.WebClient webClient = new System.Net.WebClient();
            webClient.Headers.Add("SOAPACTION", "\"urn:schemas-wiimu-com:service:PlayQueue:1#PlayQueueWithIndex\"");
@@ -901,72 +882,5 @@
            public string creator = string.Empty;
        }
        /// <summary>
        /// 获取音乐列表
        /// </summary>
        public List<Function> GetMusicList
        {
            get
            {
                return FunctionList.List.GetMusicList();
            }
        }
        /// <summary>
        /// 发送控制命令
        /// </summary>
        /// <param name="function">当前设备</param>
        /// <param name="dic">发送控制数据</param>
        public void SendControlCommand(Function function, Dictionary<string, string> dic)
        {
            new System.Threading.Thread(() =>
            {
                DriverLayer.Control.Ins.SendWriteCommand(function, dic);
            })
            { IsBackground = true }.Start();
        }
        /// <summary>
        /// 刷新设备状态
        /// </summary>
        /// <returns></returns>
        public void RefreshDeviceStatus(Function music, List<string> functionIds)
        {
            try
            {
                Dictionary<string, object> d = new Dictionary<string, object>();
                d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
                d.Add("deviceIds", functionIds);
                var responsePackNew = RequestServerhomeId(d, NewAPI.Api_Post_RefreshDeviceStatus);
                if (responsePackNew.Code != "0")
                {
                    return;
                }
                //数据返序列化为Function对象
                var str = Newtonsoft.Json.JsonConvert.SerializeObject(responsePackNew.Data.ToString());
                var function = Newtonsoft.Json.JsonConvert.DeserializeObject<Function>(str);
                if (function == null)
                {
                    return;
                }
                music.name = function.name;
                music.sid = function.sid;
                music.spk = function.spk;
                music.status = function.status;
                music.roomIds = function.roomIds;
                music.attributes = function.attributes;
            }
            catch { }
        }
        /// <summary>
        ///请求服务器(与住宅有关:例如;homeId)
        /// </summary>
        /// <returns></returns>
        public  ResponsePackNew RequestServerhomeId(object o, string api_Url, int mTimeout = 5)
        {
            var requestJson = HttpUtil.GetSignRequestJson(o);
            return HttpUtil.RequestHttpsPostFroHome(api_Url, requestJson, mTimeout);
        }
    }
}