using System;
|
using System.Collections.Generic;
|
using Shared;
|
using HDL_ON.Entity;
|
|
namespace HDL_ON.UI.Music
|
{
|
|
[System.Serializable]
|
public class A31MusicModel : Function
|
{
|
public static List<A31MusicModel> A31MusicModelList = new List<A31MusicModel> { };
|
static readonly string a31MusiceModeListFilePath = "A31MusiceModeListFilePath";
|
static A31MusicModel()
|
{
|
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].collection)
|
{
|
return true; //查询是否有音乐被收藏过
|
}
|
}
|
return false;
|
}
|
}
|
/// <summary>
|
///保存当前音乐列表
|
/// </summary>
|
public static void Save()
|
{
|
FileUtils.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))))
|
{
|
A31MusicModelList = new List<A31MusicModel> { };
|
//初始化房间列表
|
Save();
|
}
|
else
|
{
|
A31MusicModelList = Newtonsoft.Json.JsonConvert.DeserializeObject<System.Collections.Generic.List<A31MusicModel>>(System.Text.Encoding.UTF8.GetString(FileUtils.ReadFile(a31MusiceModeListFilePath)));
|
}
|
if (A31MusicModelList == null)
|
{
|
A31MusicModelList = new List<A31MusicModel> { };
|
}
|
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";
|
|
/// <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;
|
|
/// <summary>
|
/// 喜爱音乐列表
|
/// </summary>
|
public List<MusicInfo> LoveMusicInfoList = new List<MusicInfo>();
|
|
/// <summary>
|
/// DLNA所有列表
|
/// </summary>
|
public List<MusicInfo> dlnaMusicInfoLists = new List<MusicInfo>();
|
|
/// <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>();
|
/// <summary>
|
///创建音乐文件列表
|
/// </summary>
|
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
|
{
|
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
|
{
|
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;
|
|
public static bool IsJson(string json)
|
{
|
try
|
{
|
if (null == Newtonsoft.Json.Linq.JObject.Parse(json))
|
{
|
return false;
|
}
|
return true;
|
}
|
catch
|
{
|
return false;
|
}
|
}
|
/// <summary>
|
/// 自定义日志输出
|
/// </summary>
|
public static void LogMusic(string str)
|
{
|
var time = DateTime.Now;
|
Console.WriteLine(time + str);
|
}
|
|
}
|
[System.Serializable]
|
/// <summary>
|
/// 自己创建的列表信息
|
/// </summary>
|
public class FileListInfo
|
{
|
/// <summary>
|
/// 列表名
|
/// </summary>
|
public string ListName = string.Empty;
|
/// <summary>
|
/// 列表歌曲信息
|
/// </summary>
|
public List<MusicInfo> MusicInfoList = new List<MusicInfo>();
|
}
|
[System.Serializable]
|
public class TidalMusicInfo : MusicInfo
|
{
|
public MusicInfo MusicInfo;
|
public bool playurl = true;
|
}
|
[System.Serializable]
|
public class Slaves
|
{
|
/// <summary>
|
/// 从播放器值为0
|
/// </summary>
|
public string slaves = "0";
|
public List<Slave> slave_list = new List<Slave>();
|
}
|
[System.Serializable]
|
public class Slave
|
{
|
public string name = string.Empty;
|
public string mask = string.Empty;
|
public string volume = string.Empty;
|
public string mute = string.Empty;
|
public string channel = string.Empty;
|
public string ip = string.Empty;
|
public string version = string.Empty;
|
public string uuid = string.Empty;
|
}
|
|
}
|