xm
2021-12-01 6d73bf6e816570291865674bef8bce8972e4de3f
HDL_ON/UI/UI2/FuntionControlView/Music/A31MusicModel.cs
@@ -1,8 +1,7 @@
using System;
using System.Collections.Generic;
using System.Text;
using HDL_ON.Entity;
using Shared;
using HDL_ON.Entity;
namespace HDL_ON.UI.Music
{
@@ -15,19 +14,92 @@
        static A31MusicModel()
        {
            Refresh();
            //Type = DeviceType.A31MusicModel;
        }
        static List<System.Threading.Thread> updataMusicStatesListThread = new List<System.Threading.Thread>();
        /// <summary>
        /// 读取音乐状态
        /// </summary>
        public static void ReadMusicStates()
        {
            RemoveListThread();
            if (GetCollection)
            {
                for (int i = 0; i < A31MusicModelList.Count; i++)
                {
                    var a31player = A31MusicModelList[i];
                    var musicThread = new System.Threading.Thread(() =>
                    {
                        while (true)
                        {
                            System.Threading.Thread.Sleep(1000);
                            if (!a31player.IsOnLine)
                            {
                                continue;
                            }
                            SendMethod.ReadStatus(a31player);
                        }
                    })
                    { IsBackground = true, Name = "A31" };
                    musicThread.Start();
                    updataMusicStatesListThread.Add(musicThread);
                }
            }
        }
        /// <summary>
        /// 移除之前的线程
        /// </summary>
        public static void RemoveListThread() {
            for (int i = 0; i < updataMusicStatesListThread.Count;)
            {
                try
                {
                    var thread = updataMusicStatesListThread[i];
                    if (thread.IsAlive)
                    {
                        thread.Abort();
                    }
                    updataMusicStatesListThread.Remove(thread);
                }
                catch (Exception e)
                {
                    MainPage.Log("clearA31Threads error : " + e.Message);
                }
                finally
                {
                    MainPage.Log("clearA31Threads over");
                }
            }
        }
        /// <summary>
        /// 音乐列表里是否有音乐被收藏过
        /// </summary>
        static bool GetCollection
        {
            get
            {
                for (int i = 0; i < A31MusicModelList.Count; i++)
                {
                    if (A31MusicModelList[i].collect)
                    {
                        return true; //查询是否有音乐被收藏过
                    }
                }
                return false;
            }
        }
        /// <summary>
        ///保存当前音乐列表
        /// </summary>
        public static void Save()
        {
            FileUtils.WriteFileByBytes(a31MusiceModeListFilePath, System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(A31MusicModelList)));
            Common.FileUtlis.Files.WriteFileByBytes(a31MusiceModeListFilePath, System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(A31MusicModelList)));
        }
        public static void Refresh()
        {
            if (null == Newtonsoft.Json.JsonConvert.DeserializeObject<System.Collections.Generic.List<A31MusicModel>>(System.Text.Encoding.UTF8.GetString(FileUtils.ReadFile(a31MusiceModeListFilePath))))
            if (null == Newtonsoft.Json.JsonConvert.DeserializeObject<System.Collections.Generic.List<A31MusicModel>>(System.Text.Encoding.UTF8.GetString(Common.FileUtlis.Files.ReadFile(a31MusiceModeListFilePath))))
            {
                A31MusicModelList = new List<A31MusicModel> { };
                //初始化房间列表
@@ -35,7 +107,7 @@
            }
            else
            {
                A31MusicModelList = Newtonsoft.Json.JsonConvert.DeserializeObject<System.Collections.Generic.List<A31MusicModel>>(System.Text.Encoding.UTF8.GetString(FileUtils.ReadFile(a31MusiceModeListFilePath)));
                A31MusicModelList = Newtonsoft.Json.JsonConvert.DeserializeObject<System.Collections.Generic.List<A31MusicModel>>(System.Text.Encoding.UTF8.GetString(Common.FileUtlis.Files.ReadFile(a31MusiceModeListFilePath)));
            }
            if (A31MusicModelList == null)
            {
@@ -43,12 +115,11 @@
            }
            A31MusicModelList.RemoveAll((obj) => obj == null);
        }
        /// <summary>
        /// 音乐播放器名称
        /// </summary>
        public string Name=string.Empty;
        public string Name = string.Empty;
        /// <summary>
        /// 上一次更新的时间
        /// 记录数据反馈的时间(因为有时间网络差数据不回复,导致刷新当前播放音乐时间不正确)
@@ -68,12 +139,15 @@
        /// <summary>
        /// 是否是播放器列表最后一个(true)
        /// </summary>
        public bool IsEnd=false;
        public bool IsEnd = false;
        public int A31DeviceType;
        //public string a31Source = "wifi";
        //public string a31Source = string.Empty;
        /// <summary>
        /// 音乐播放器ID
        /// </summary>
        public string UniqueDeviceName = string.Empty;
        /// <summary>
@@ -130,7 +204,7 @@
        /// <summary>
        /// usb列表
        /// </summary>
        public List<MusicInfo> USBList= new List<MusicInfo>();
        public List<MusicInfo> USBList = new List<MusicInfo>();
        /// <summary>
        /// Tidal喜爱列表
        /// </summary>
@@ -138,31 +212,65 @@
        /// <summary>
        ///创建音乐文件列表
        /// </summary>
        public List<FileListInfo> FileLists= new List<FileListInfo>();
        public List<FileListInfo> FileLists = new List<FileListInfo>();
        /// <summary>
        /// 当前的A31音乐播放器
        /// </summary>
        public static A31MusicModel Current;
        public int _ServerClientType;
        /// <summary>
        /// -1表示从的0表示默认1表示主的
        /// </summary>
        public int ServerClientType;
        public int ServerClientType
        {
            get
            {
                return _ServerClientType;
            }
            set
            {
                _ServerClientType = value;
                if(value == 0)
                {
                    name = Name;
                }
            }
        }
        /// <summary>
        /// 记录主播放器IP
        /// </summary>
        public string MainPlayIP = string.Empty;
        public string _MainPlayName = string.Empty;
        /// <summary>
        /// 记录主播放器名称
        /// </summary>
        public string MainPlayName = string.Empty;
        public string MainPlayName
        {
            get
            {
                return _MainPlayName;
            }
            set
            {
                _MainPlayName = value;
                if(ServerClientType == 1)
                {
                    name = value;
                }
            }
        }
        /// <summary>
        /// 记录主播放器是否被收藏(秀桡定义的)
        /// </summary>
        public bool MainPlayCollection = false;
        public Slaves Slave = new Slaves();
        /// <summary>
        /// 记录时间
        /// </summary>
        public static DateTime ProgressDateTime = DateTime.Now;
        //static System.Threading.Tasks.Task task;
        //音量列表
        //static List<int> volumeCommandList = new List<int> ();
        public static bool IsJson(string json)
        {
@@ -179,10 +287,15 @@
                return false;
            }
        }
        /// <summary>
        /// 自定义日志输出
        /// </summary>
        public static void LogMusic(string str)
        {
            var time = DateTime.Now;
            Console.WriteLine(time + str);
        }
    }
    [System.Serializable]
    /// <summary>
@@ -227,6 +340,4 @@
        public string uuid = string.Empty;
    }
}
}