| | |
| | | { |
| | | |
| | | [System.Serializable] |
| | | public class A31MusicModel : Function |
| | | public class A31MusicModel |
| | | { |
| | | public static List<A31MusicModel> A31MusicModelList = new List<A31MusicModel> { }; |
| | | static readonly string a31MusiceModeListFilePath = "A31MusiceModeListFilePath"; |
| | | static A31MusicModel() |
| | | { |
| | | Refresh(); |
| | | //Refresh(); |
| | | } |
| | | |
| | | 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; |
| | | } |
| | | } |
| | | public Function functionMusic = new Function(); |
| | | |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | ///保存当前音乐列表 |
| | | /// </summary> |
| | |
| | | A31MusicModelList.RemoveAll((obj) => obj == null); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 音乐播放器名称 |
| | | /// </summary> |
| | | public string Name = string.Empty; |
| | | |
| | | /// <summary> |
| | | /// 上一次更新的时间 |
| | | /// 记录数据反馈的时间(因为有时间网络差数据不回复,导致刷新当前播放音乐时间不正确) |
| | | /// 记录数据反馈的时间(因为有时候网络差数据不回复,导致刷新当前播放音乐时间不正确) |
| | | /// ((当前时间)DateTime.Now - (记录时间)LastDateTimeLastDateTime).TotalSeconds=误差时间(秒) |
| | | /// </summary> |
| | | public DateTime LastDateTime; |
| | | /// <summary> |
| | | /// IP地址 |
| | | /// 记录滑动音量条时间<用来处理音量跳动> |
| | | /// </summary> |
| | | public string IPAddress = "192.168.1.100"; |
| | | public static DateTime ProgressDateTime = DateTime.MinValue; |
| | | |
| | | /// <summary> |
| | | /// 端口 |
| | | /// </summary> |
| | | public int Port = 49153; |
| | | |
| | | /// <summary> |
| | | /// 是否是播放器列表最后一个(true) |
| | | /// </summary> |
| | | 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> |
| | | /// 当前播放状态 |
| | | /// </summary> |
| | | public A31PlayStatus A31PlayStatus = new A31PlayStatus(); |
| | | |
| | | public MusicInfo CurrentMusic = new MusicInfo(); |
| | | |
| | | /// <summary> |
| | | ///当前播放的列表信息 |
| | | /// </summary> |
| | | public List<MusicInfo> CurrentPlayMusicInfoList = new List<MusicInfo>(); |
| | | |
| | | /// <summary> |
| | | /// 是否允许显示 |
| | | /// </summary> |
| | | public bool IsCanShow = true; |
| | | |
| | | |
| | | /// <summary> |
| | | /// 是否在线,如果在线就允许读取信息 |
| | | /// 当前播放歌曲列表 |
| | | /// </summary> |
| | | public bool IsOnLine = true; |
| | | |
| | | public List<SongList> CurrentPlayMusicInfoList = new List<SongList>(); |
| | | /// <summary> |
| | | /// 喜爱音乐列表 |
| | | /// </summary> |
| | | public List<MusicInfo> LoveMusicInfoList = new List<MusicInfo>(); |
| | | |
| | | public List<SongInfo> LoveMusicInfoList = new List<SongInfo>(); |
| | | /// <summary> |
| | | /// DLNA所有列表 |
| | | /// 所有【音乐列表】 |
| | | /// </summary> |
| | | public List<MusicInfo> dlnaMusicInfoLists = new List<MusicInfo>(); |
| | | |
| | | public List<SongList> AllMusicLists = new List<SongList>(); |
| | | /// <summary> |
| | | /// 电台所有列表 |
| | | /// 所有【音乐源】的列表 |
| | | /// </summary> |
| | | public List<MusicInfo> CnRadioInfoList = new List<MusicInfo>(); |
| | | |
| | | /// <summary> |
| | | /// vTuner电台所有列表 |
| | | /// </summary> |
| | | public List<MusicInfo> vTunerList = new List<MusicInfo>(); |
| | | |
| | | /// <summary> |
| | | /// 喜爱电台列表 |
| | | /// </summary> |
| | | public List<MusicInfo> LoveRadioInfoList = new List<MusicInfo>(); |
| | | |
| | | /// <summary> |
| | | /// Pandora电台所有列表 |
| | | /// </summary> |
| | | public List<MusicInfo> PanRadioInfoList = new List<MusicInfo>(); |
| | | /// <summary> |
| | | /// usb列表 |
| | | /// </summary> |
| | | public List<MusicInfo> USBList = new List<MusicInfo>(); |
| | | /// <summary> |
| | | /// Tidal喜爱列表 |
| | | /// </summary> |
| | | public List<MusicInfo> TidalLikelist = new List<MusicInfo>(); |
| | | public List<GroupList> AllSourceGroupList = new List<GroupList>(); |
| | | /// <summary> |
| | | ///创建音乐文件列表 |
| | | /// </summary> |
| | |
| | | /// </summary> |
| | | public static A31MusicModel Current; |
| | | |
| | | public int _ServerClientType; |
| | | /// <summary> |
| | | /// -1表示从的0表示默认1表示主的 |
| | | /// </summary> |
| | | 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 |
| | | /// <returns></returns> |
| | | public List<SongInfo> GetSongList(string listName) |
| | | { |
| | | get |
| | | var list = CurrentPlayMusicInfoList.Find((o) => o.group == listName); |
| | | if (list == null) |
| | | { |
| | | return _MainPlayName; |
| | | return new List<SongInfo>(); |
| | | } |
| | | set |
| | | { |
| | | _MainPlayName = value; |
| | | if(ServerClientType == 1) |
| | | { |
| | | name = value; |
| | | } |
| | | } |
| | | return list.songs; |
| | | } |
| | | /// <summary> |
| | | /// 记录主播放器是否被收藏(秀桡定义的) |
| | | /// </summary> |
| | | public bool MainPlayCollection = false; |
| | | |
| | | |
| | | public Slaves Slave = new Slaves(); |
| | | /// <summary> |
| | | /// 记录时间 |
| | | /// </summary> |
| | | public static DateTime ProgressDateTime = DateTime.Now; |
| | | |
| | | /// <summary> |
| | | /// 判断是否是json数据 |
| | | /// </summary> |
| | | /// <param name="json"></param> |
| | | /// <returns></returns> |
| | | public static bool IsJson(string json) |
| | | { |
| | | try |
| | |
| | | /// <summary> |
| | | /// 列表歌曲信息 |
| | | /// </summary> |
| | | public List<MusicInfo> MusicInfoList = new List<MusicInfo>(); |
| | | public List<SongInfo> MusicInfoList = new List<SongInfo>(); |
| | | } |
| | | [System.Serializable] |
| | | public class TidalMusicInfo : MusicInfo |
| | |
| | | public string uuid = string.Empty; |
| | | } |
| | | |
| | | [System.Serializable] |
| | | /// <summary> |
| | | /// 支持多个音乐 |
| | | /// </summary> |
| | | public class PalyerSongListInfo |
| | | { |
| | | /// <summary> |
| | | /// 音乐sid |
| | | /// </summary> |
| | | public string sid = string.Empty; |
| | | /// <summary> |
| | | /// 音乐源 |
| | | /// </summary> |
| | | public string source = string.Empty; |
| | | /// <summary> |
| | | /// 列表信息 |
| | | /// </summary> |
| | | public List<SongList> playlist = new List<SongList>(); |
| | | } |
| | | |
| | | [System.Serializable] |
| | | /// <summary> |
| | | /// 列表信息 |
| | | /// </summary> |
| | | public class SongList |
| | | { |
| | | /// <summary> |
| | | /// 列表名 |
| | | /// </summary> |
| | | public string group = string.Empty; |
| | | /// <summary> |
| | | /// 自己定义的(用识别是那个音乐源的列表) |
| | | /// </summary> |
| | | public string source = string.Empty; |
| | | /// <summary> |
| | | /// 列表歌曲信息 |
| | | /// </summary> |
| | | public List<SongInfo> songs = new List<SongInfo>(); |
| | | } |
| | | [System.Serializable] |
| | | public class SongInfo : MusicInfo |
| | | { |
| | | /// <summary> |
| | | /// 歌曲名称 |
| | | /// </summary> |
| | | public string name = string.Empty; |
| | | /// <summary> |
| | | /// 大小 |
| | | /// </summary> |
| | | public string size = string.Empty; |
| | | /// <summary> |
| | | /// 时长 |
| | | /// </summary> |
| | | public string time = string.Empty; |
| | | /// <summary> |
| | | /// 歌曲地址 |
| | | /// </summary> |
| | | public string url = string.Empty; |
| | | /// <summary> |
| | | /// 类型<自己用> |
| | | /// </summary> |
| | | public string type = string.Empty; |
| | | /// <summary> |
| | | /// 列表名和group组名是一样的 |
| | | /// </summary> |
| | | public string listName = string.Empty; |
| | | } |
| | | |
| | | |
| | | [System.Serializable] |
| | | /// <summary> |
| | | /// 列表名列表 |
| | | /// </summary> |
| | | public class GroupList |
| | | { |
| | | /// <summary> |
| | | ///设备sid |
| | | /// </summary> |
| | | public string sid = string.Empty; |
| | | /// <summary> |
| | | /// 音乐源 |
| | | /// </summary> |
| | | public string source = string.Empty; |
| | | /// <summary> |
| | | /// 列表名集合 |
| | | /// </summary> |
| | | public List<ListName> groupList = new List<ListName>(); |
| | | |
| | | } |
| | | [System.Serializable] |
| | | /// <summary> |
| | | /// 列表名 |
| | | /// </summary> |
| | | public class ListName |
| | | { |
| | | /// <summary> |
| | | /// 组名=列表名 |
| | | /// </summary> |
| | | public string group = string.Empty; |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | } |