From e2a009ca812c2f933e195c4276b79c34ed31862a Mon Sep 17 00:00:00 2001 From: wjc <1243177876@qq.com> Date: 星期五, 17 十二月 2021 18:29:10 +0800 Subject: [PATCH] 2021-12-17-01 --- HDL_ON/UI/UI2/FuntionControlView/Music/SendMethod.cs | 150 ++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 134 insertions(+), 16 deletions(-) diff --git a/HDL_ON/UI/UI2/FuntionControlView/Music/SendMethod.cs b/HDL_ON/UI/UI2/FuntionControlView/Music/SendMethod.cs index dd36144..bb8f901 100644 --- a/HDL_ON/UI/UI2/FuntionControlView/Music/SendMethod.cs +++ b/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> @@ -209,7 +225,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;"); + a31MusicModel.A31PlayStatus.TrackURL = se.SearchForTextOfTag("TrackURI").Replace("&", "&amp;"); } catch (Exception ex) @@ -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,11 +539,11 @@ 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;"); var metadata = track.SearchForTextOfTag("Metadata").Replace("&", "&"); var item = SecurityElement.FromString(metadata).SearchForChildByTag("item"); - musicInfo.Title = item.SearchForTextOfTag("dc:title").Replace("&", "&amp;"); + musicInfo.Title = item.SearchForTextOfTag("dc:title").Replace("&", "&amp;"); musicInfo.Artist = item.SearchForTextOfTag("upnp:artist").Replace("&", "&amp;"); musicInfo.Album = item.SearchForTextOfTag("upnp:album").Replace("&", "&amp;"); musicInfo.Duration = item.SearchForTextOfTag("res"); @@ -597,7 +614,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\"?>"); @@ -656,7 +673,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) { //鏈�澶у彂閫佺殑鏉℃暟 @@ -739,10 +756,12 @@ sb.AppendLine("&lt;dc:title&gt;" + tempMusicInfo.Title + "&lt;/dc:title&gt;"); sb.AppendLine("&lt;dc:creator&gt;DJ Sanny J&lt;/dc:creator&gt;"); - if (musicSource== "鎴戠殑鍒楄〃") { + if (musicSource == "鎴戠殑鍒楄〃") + { sb.AppendLine("&lt;upnp:artist&gt;" + listName + "&lt;/upnp:artist&gt;"); } - else { + else + { sb.AppendLine("&lt;upnp:artist&gt;" + tempMusicInfo.Artist + "&lt;/upnp:artist&gt;"); } sb.AppendLine("&lt;upnp:album&gt;" + tempMusicInfo.Album + "&lt;/upnp:album&gt;"); @@ -778,7 +797,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 + "\""); @@ -788,13 +807,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\""); @@ -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; + } + //鏁版嵁杩斿簭鍒楀寲涓篎unction瀵硅薄 + 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; + } + //鏁版嵁杩斿簭鍒楀寲涓篎unction瀵硅薄 + 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> + ///璇锋眰鏈嶅姟鍣紙涓庝綇瀹呮湁鍏�:渚嬪锛沨omeId锛� + /// </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); + + } } } -- Gitblit v1.8.0