wjc
2021-12-17 e2a009ca812c2f933e195c4276b79c34ed31862a
HDL_ON/UI/UI2/FuntionControlView/Music/SendMethod.cs
@@ -4,12 +4,28 @@
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>
@@ -221,12 +237,12 @@
                #region 更新其他界面音乐状态
                Application.RunOnMainThread(() =>
                {
                    a31MusicModel.trait_on_off.curValue = a31MusicModel.A31PlayStatus.status == "play" ? "on" : "off";
                    //a31MusicModel.trait_on_off.curValue = a31MusicModel.A31PlayStatus.status == "play" ? "on" : "off";
                    //Console.WriteLine($"music : {a31MusicModel.sid} : {a31MusicModel.on_off}");
                    HomePage.UpdataFunctionStates(a31MusicModel);
                    HomePage.UpdataFunctionStates(a31MusicModel.functionMusic);
                    foreach (var e in A31MusicModel.A31MusicModelList)
                    {
                        RoomPage.UpdataStates(a31MusicModel);
                        RoomPage.UpdataStates(e.functionMusic);
                    }
                });
                #endregion
@@ -463,7 +479,8 @@
        /// <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
                {
@@ -501,9 +518,9 @@
        /// <summary>
        /// 获取USb的列表
        /// </summary>
        public static List<MusicInfo> GetUsbList(A31MusicModel a31player)
        public static List<Songs> GetUsbList(A31MusicModel a31player)
        {
            var musicInfoList = new List<MusicInfo>();
            var musicInfoList = new List<Songs>();
            musicInfoList.Clear();
            var usbString = GetUSBPlayList(a31player);
            if (usbString == null)
@@ -522,7 +539,7 @@
            foreach (SecurityElement track in SecurityElement.FromString(se.Text).SearchForChildByTag("Tracks").Children)
            {
                MusicInfo musicInfo = new MusicInfo();
                Songs musicInfo = new Songs();
                musicInfo.URL = track.SearchForTextOfTag("URL").Replace("&", "&amp;amp;");
                var metadata = track.SearchForTextOfTag("Metadata").Replace("&", "&amp;");
                var item = SecurityElement.FromString(metadata).SearchForChildByTag("item");
@@ -739,10 +756,12 @@
                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;");
@@ -882,5 +901,104 @@
            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>
        /// 获取音乐列表
        /// </summary>
        /// <param name="music"></param>
        /// <returns></returns>
        public void GetPalyList(Function music)
        {
            try
            {
                Dictionary<string, object> d = new Dictionary<string, object>();
                d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
                d.Add("deviceIds", new List<string> { music.deviceId });
                var responsePackNew = RequestServerhomeId(d, NewAPI.Api_Post_PlayerList);
                if (responsePackNew.Code != "0")
                {
                    return;
                }
                //数据返序列化为Function对象
                var str = Newtonsoft.Json.JsonConvert.SerializeObject(responsePackNew.Data.ToString());
                var palyLists = Newtonsoft.Json.JsonConvert.DeserializeObject<List<PalyListInfo>>(str);
                if (palyLists == null)
                {
                    palyLists =new List<PalyListInfo>();
                }
                A31MusicModel.Current.palyListInfos = palyLists;
            }
            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);
        }
    }
}