From b7724b7823c1172f30178c3628218acef90f84b6 Mon Sep 17 00:00:00 2001
From: 陈嘉乐 <cjl@hdlchina.com.cn>
Date: 星期二, 02 六月 2020 12:01:34 +0800
Subject: [PATCH] 2020-06-2-1
---
HDL_ON/UI/Music/MusicMain.cs | 112 ++++++++++++++++++
HDL_ON/UI/Music/SendMethod.cs | 4
.vs/HDL_APP_Project/xs/sqlite3/storage.ide-shm | 0
HDL_ON/UI/Music/A31MusicModel.cs | 9 +
.vs/HDL_APP_Project/xs/sqlite3/storage.ide | 0
.vs/HDL_APP_Project/xs/UserPrefs.xml | 10 +
.vs/HDL_APP_Project/xs/sqlite3/storage.ide-wal | 0
HDL_ON/UI/Music/View/DialogView.cs | 196 +++++++++++++++++++++++++++++--
8 files changed, 304 insertions(+), 27 deletions(-)
diff --git a/.vs/HDL_APP_Project/xs/UserPrefs.xml b/.vs/HDL_APP_Project/xs/UserPrefs.xml
index 2a3b5ef..3e02710 100644
--- a/.vs/HDL_APP_Project/xs/UserPrefs.xml
+++ b/.vs/HDL_APP_Project/xs/UserPrefs.xml
@@ -1,8 +1,11 @@
锘�<Properties StartupConfiguration="{09712674-2A38-407B-B1E2-560B2C352F9A}|Default">
<MonoDevelop.Ide.Workbench ActiveDocument="HDL_ON/UI/Music/MusicMain.cs">
<Files>
- <File FileName="HDL_ON/UI/Music/MusicMain.cs" Line="70" Column="14" />
- <File FileName="HDL_ON/UI/Music/SendMethod.cs" Line="69" Column="24" />
+ <File FileName="HDL_ON/UI/Music/SendMethod.cs" Line="457" Column="52" />
+ <File FileName="../鏃х増鏈琈usic/MyMusic.cs" Line="754" Column="70" />
+ <File FileName="HDL_ON/UI/Music/A31MusicModel.cs" Line="159" Column="15" />
+ <File FileName="HDL_ON/UI/Music/View/DialogView.cs" Line="673" Column="1" />
+ <File FileName="HDL_ON/UI/Music/MusicMain.cs" Line="1" Column="1" />
</Files>
<Pads>
<Pad Id="ProjectPad">
@@ -17,6 +20,9 @@
<Node name="MusicMain.cs" selected="True" />
</Node>
<Node name="UI0-Public" expanded="True" />
+ <Node name="UI2" expanded="True">
+ <Node name="2-Classification" expanded="True" />
+ </Node>
</Node>
</Node>
<Node name="HDL-ON_Android" expanded="True">
diff --git a/.vs/HDL_APP_Project/xs/sqlite3/storage.ide b/.vs/HDL_APP_Project/xs/sqlite3/storage.ide
index 1c0b255..8068f2e 100644
--- a/.vs/HDL_APP_Project/xs/sqlite3/storage.ide
+++ b/.vs/HDL_APP_Project/xs/sqlite3/storage.ide
Binary files differ
diff --git a/.vs/HDL_APP_Project/xs/sqlite3/storage.ide-shm b/.vs/HDL_APP_Project/xs/sqlite3/storage.ide-shm
index aeb245f..6c15581 100644
--- a/.vs/HDL_APP_Project/xs/sqlite3/storage.ide-shm
+++ b/.vs/HDL_APP_Project/xs/sqlite3/storage.ide-shm
Binary files differ
diff --git a/.vs/HDL_APP_Project/xs/sqlite3/storage.ide-wal b/.vs/HDL_APP_Project/xs/sqlite3/storage.ide-wal
index ecd0799..7e09e7e 100644
--- a/.vs/HDL_APP_Project/xs/sqlite3/storage.ide-wal
+++ b/.vs/HDL_APP_Project/xs/sqlite3/storage.ide-wal
Binary files differ
diff --git a/HDL_ON/UI/Music/A31MusicModel.cs b/HDL_ON/UI/Music/A31MusicModel.cs
index b83e0cf..55224d2 100644
--- a/HDL_ON/UI/Music/A31MusicModel.cs
+++ b/HDL_ON/UI/Music/A31MusicModel.cs
@@ -144,10 +144,13 @@
/// </summary>
public int ServerClientType;
/// <summary>
- /// 琛ㄧず浠庣殑鎾斁鍣↖P
+ /// 璁板綍涓绘挱鏀惧櫒IP
/// </summary>
- public string ServerIP = string.Empty;
-
+ public string MainPlayIP = string.Empty;
+ /// <summary>
+ /// 璁板綍涓绘挱鏀惧櫒鍚嶇О
+ /// </summary>
+ public string MainPlayName = string.Empty;
public Slaves Slave = new Slaves();
diff --git a/HDL_ON/UI/Music/MusicMain.cs b/HDL_ON/UI/Music/MusicMain.cs
index 1f4b697..dff60b5 100644
--- a/HDL_ON/UI/Music/MusicMain.cs
+++ b/HDL_ON/UI/Music/MusicMain.cs
@@ -12,6 +12,10 @@
//public MusicListViewMain() {
// Frame = this;
//}
+ public MusicMain()
+ {
+ Tag = "MusicMain";
+ }
public override void RemoveFromParent()
{
base.RemoveFromParent();
@@ -103,7 +107,7 @@
if (obj == null)
{
///杩欓噷瑕佽鍙栦富浠庡叧绯�
- // readServerOrClientMode(false);
+ //readServerOrClientMode();
A31MusicModel.Save();
return;
}
@@ -139,7 +143,7 @@
{
if (obj == null)
{
- //readServerOrClientMode(true);
+ readServerOrClientMode();
A31MusicModel.Save();
Application.RunOnMainThread(() =>
{
@@ -195,6 +199,8 @@
musicView.songNameBtn.Text = a31player.A31PlayStatus.Title;
musicView.musicNameBtn.Text = a31player.Name;
musicView.regionBtn.TextID = StringId.region;
+
+
EventHandler<MouseEventArgs> clickMergence = (sender, e) =>
{
@@ -266,7 +272,14 @@
{
musicView.singerBtn.Text = a31player.A31PlayStatus.Artist;
musicView.songNameBtn.Text = a31player.A31PlayStatus.Title;
- musicView.musicNameBtn.Text = a31player.Name;
+ if (a31player.ServerClientType == 1)
+ {
+ musicView.musicNameBtn.Text = a31player.MainPlayName;
+ }
+ else
+ {
+ musicView.musicNameBtn.Text = a31player.Name;
+ }
if (a31player.A31PlayStatus.status == "play")
{
musicView.playBtn.IsSelected = true;
@@ -281,7 +294,100 @@
}
+ /// <summary>
+ /// 璇诲彇涓讳粠鍏崇郴
+ /// </summary>
+ void readServerOrClientMode()
+ {
+ try
+ {
+ for (int i = 0; i < A31MusicModel.A31MusicModelList.Count; i++)
+ {
+ var a31player = A31MusicModel.A31MusicModelList[i];
+ if (!a31player.IsOnLine)
+ {
+ continue;
+ }
+ try
+ {
+ a31player.ServerClientType = 0;
+ var result = SendMethod.OpenWeb("http://" + a31player.IPAddress + "/httpapi.asp?command=multiroom:getSlaveList");
+ if (result == null)
+ {
+ result = SendMethod.OpenWeb("http://" + a31player.IPAddress + "/httpapi.asp?command=multiroom:getSlaveList");
+ }
+ if (result != null)
+ {
+ a31player.Slave = Newtonsoft.Json.JsonConvert.DeserializeObject<Slaves>(result);
+ }
+ }
+ catch (Exception e)
+ {
+ var d = e.Message;
+ }
+ }
+ //鍒嗘瀽涓讳粠鍏崇郴
+ for (int i = 0; i < A31MusicModel.A31MusicModelList.Count; i++)
+ {
+ var a31player = A31MusicModel.A31MusicModelList[i];
+ if (!a31player.IsOnLine)
+ {
+ continue;
+ }
+ try
+ {
+ if (a31player.Slave != null && "0" != a31player.Slave.slaves)
+ {
+ a31player.ServerClientType = 1;//涓荤殑
+ string str = a31player.Name;
+ for (int j = 0; j < a31player.Slave.slave_list.Count; j++)
+ {
+
+ var slave = a31player.Slave.slave_list[j];
+ str = str + "+" + slave.name;
+ var tempA31Player = A31MusicModel.A31MusicModelList.Find((obj) => slave.uuid.Replace("uuid:", "") == obj.UniqueDeviceName);
+ if (tempA31Player == null)
+ {
+ A31MusicModel.A31MusicModelList.Add(new A31MusicModel
+ {
+ ServerClientType = -1,//浠庣殑
+ IPAddress = slave.ip,
+ MainPlayIP = a31player.IPAddress,
+ UniqueDeviceName = slave.uuid.Replace("uuid:", ""),
+ Name = slave.name,
+ IsCanShow = false,
+ IsOnLine = false,
+ });
+ }
+ //濡傛灉鎵惧埌灏辨洿鏂颁负浠庣殑
+ else
+ {
+ tempA31Player.ServerClientType = -1;//浠庣殑
+ tempA31Player.IPAddress = slave.ip;
+ tempA31Player.MainPlayIP = a31player.IPAddress;
+ tempA31Player.Name = slave.name;
+ tempA31Player.UniqueDeviceName = slave.uuid.Replace("uuid:", "");
+ tempA31Player.IsCanShow = false;
+ tempA31Player.IsOnLine = false;
+
+ }
+ }
+ a31player.MainPlayName = str;
+ }
+ }
+ catch (Exception e)
+ {
+ var ss = e.Message;
+ }
+ }
+
+ }
+ catch (Exception e)
+ {
+ var ss = e.Message;
+ }
+ }
}
diff --git a/HDL_ON/UI/Music/SendMethod.cs b/HDL_ON/UI/Music/SendMethod.cs
index 16c3a95..b9b530d 100644
--- a/HDL_ON/UI/Music/SendMethod.cs
+++ b/HDL_ON/UI/Music/SendMethod.cs
@@ -155,7 +155,7 @@
if (a31MusicModel.ServerClientType == -1)
{
- var result = OpenWeb("http://" + a31MusicModel.ServerIP + "/httpapi.asp?command=multiroom:getSlaveList");
+ var result = OpenWeb("http://" + a31MusicModel.MainPlayIP + "/httpapi.asp?command=multiroom:getSlaveList");
if (result != null)
{
var slaves = Newtonsoft.Json.JsonConvert.DeserializeObject<Slaves>(result);
@@ -460,7 +460,7 @@
{
if (a31player.ServerClientType == -1)
{
- new System.Net.WebClient().DownloadData(new Uri("http://" + a31player.ServerIP + "/httpapi.asp?command=multiroom:SlaveVolume:" + a31player.IPAddress + ":" + volume));
+ new System.Net.WebClient().DownloadData(new Uri("http://" + a31player.MainPlayIP + "/httpapi.asp?command=multiroom:SlaveVolume:" + a31player.IPAddress + ":" + volume));
}
else if (a31player.ServerClientType == 1)
{
diff --git a/HDL_ON/UI/Music/View/DialogView.cs b/HDL_ON/UI/Music/View/DialogView.cs
index 55f9d6e..0d75a38 100644
--- a/HDL_ON/UI/Music/View/DialogView.cs
+++ b/HDL_ON/UI/Music/View/DialogView.cs
@@ -311,7 +311,7 @@
Width = Application.GetRealWidth(344),
};
dialogFra.AddChidren(verticalScrolViewLayout);
- var playList = new List<A31MusicModel>();
+ var playList1 = new List<A31MusicModel>();
for (int i = 0; i < A31MusicModel.A31MusicModelList.Count; i++)
{
var player = A31MusicModel.A31MusicModelList[i];
@@ -367,19 +367,19 @@
{
clickBtn.IsSelected = !clickBtn.IsSelected;
selectedIconBtn.IsSelected = clickBtn.IsSelected;
- var musicPlayer = playList.Find((c) => c.UniqueDeviceName == player.UniqueDeviceName);
+ var musicPlayer = playList1.Find((c) => c.UniqueDeviceName == player.UniqueDeviceName);
if (selectedIconBtn.IsSelected)
{
if (musicPlayer == null)
{
- playList.Add(player);
+ playList1.Add(player);
}
}
else
{
if (musicPlayer != null)
{
- playList.Remove(player);
+ playList1.Remove(player);
}
}
};
@@ -396,20 +396,47 @@
}
confirmBtn.MouseUpEventHandler += (sender, e) =>
{
- if (playList.Count <= 1)
+ if (playList1.Count <= 1)
{
new PublicAssmebly().TipMsgAutoClose("鑷冲皯閫変腑涓や釜浠ヤ笂鎾斁鍣�", false);
return;
}
- PlayerView(dialog, playList);
+
+ var playList2 = new List<A31MusicModel>();
+ for (int i = 0; i < playList1.Count; i++)
+ {
+ var musics = playList1[i];
+ if (musics.A31PlayStatus.playSource == "play")
+ {
+ playList2.Add(musics);
+ }
+
+ }
+
+ if (playList2.Count == 0)
+ {
+ PlayerView(dialog, playList1, playList1);
+ }
+ else if (playList2.Count == 1)
+ {
+ dialog.Close();
+ var player = playList2[0];
+ Threading(player, playList1);
+ }
+ else
+ {
+ PlayerView(dialog, playList1, playList2);
+ }
};
}
/// <summary>
/// 閫変腑涓绘挱鏀惧櫒鐨勭晫闈�
/// </summary>
- /// <param name="musicList"></param>
- void PlayerView(Dialog dialogF ,List<A31MusicModel> musicList)
+ /// <param name="musicList1"></param>
+ /// /// <param name="musicList2">鏄剧ず鎾斁鍣ㄥ垪琛�</param>
+ void PlayerView(Dialog dialogF, List<A31MusicModel> musicList1, List<A31MusicModel> musicList2)
{
+
//涓绘帶浠�
Dialog dialog = new Dialog()
{
@@ -472,7 +499,6 @@
IsBold = true,
};
topFra.AddChidren(txetBtn);
-
//纭鎺т欢
Button confirmBtn = new Button
{
@@ -486,10 +512,7 @@
TextSize = TextSize.Text14,
};
topFra.AddChidren(confirmBtn);
- confirmBtn.MouseUpEventHandler += (sender, e) =>
- {
- };
VerticalScrolViewLayout verticalScrolViewLayout = new VerticalScrolViewLayout
{
Y = Application.GetRealHeight(50),
@@ -498,10 +521,10 @@
};
dialogFra.AddChidren(verticalScrolViewLayout);
//璁板綍閫変腑鐘舵��
- Button selectedBtn = new Button() { Tag="No"};
- for (int i = 0; i < musicList.Count; i++)
+ Button selectedBtn = new Button() { Name = "No" };
+ for (int i = 0; i < musicList2.Count; i++)
{
- var player = musicList[i];
+ var player = musicList2[i];
RowLayout addFlieRow = new RowLayout
{
Height = Application.GetRealHeight(50),
@@ -532,6 +555,7 @@
Height = Application.GetMinRealAverage(28),
UnSelectedImagePath = "MusicIcon/noSelectedIcon.png",
SelectedImagePath = "MusicIcon/selectedIcon.png",
+ Tag = player,
};
addFlieRow.AddChidren(selectedIconBtn);
///鍔犲ぇ鍑犵偣鑼冨洿
@@ -543,8 +567,8 @@
clickBtn.MouseUpEventHandler += (sender, e) =>
{
selectedBtn.IsSelected = false;
- selectedBtn.Tag = "Yes";
selectedBtn = selectedIconBtn;
+ selectedBtn.Name = "Yes";
selectedBtn.IsSelected = true;
};
//绾�
@@ -561,15 +585,153 @@
confirmBtn.MouseUpEventHandler += (sender, e) =>
{
- if (selectedBtn.Tag.ToString() == "No")
+ if (selectedBtn.Name.ToString() == "No")
{
new PublicAssmebly().TipMsgAutoClose("杩樻病閫変腑鎾斁鍣�", false);
return;
}
dialogF.Close();
dialog.Close();
+ var serverMusic = selectedBtn.Tag as A31MusicModel;
+ Threading(serverMusic, musicList1);
+
+
};
}
+
+ /// <summary>
+ /// 鍙戦�佺粍鍚堝懡浠ら�昏緫澶勭悊鐨勬柟娉�
+ /// </summary>
+ /// <param name="serverMusic">涓绘挱鏀惧櫒</param>
+ /// <param name="musicList1"></param>
+ void Threading(A31MusicModel serverMusic, List<A31MusicModel> musicList1)
+ {
+ System.Threading.Tasks.Task.Run(() =>
+ {
+ try
+ {
+
+ var IP = "";
+ if (serverMusic.ServerClientType == -1)
+ {
+ IP = serverMusic.MainPlayIP;
+ }
+ else
+ {
+ IP = serverMusic.IPAddress;
+ }
+
+ var statusEx = SendMethod.OpenWeb("http://" + IP + "/httpapi.asp?command=getStatusEx");
+ if (statusEx == null)
+ {
+ statusEx = SendMethod.OpenWeb("http://" + IP + "/httpapi.asp?command=getStatusEx");
+ }
+ if (statusEx == null)
+ {
+ return;
+ }
+ var serverIfon = Newtonsoft.Json.JsonConvert.DeserializeObject<A31Wifi>(statusEx);
+ if (serverIfon == null)
+ {
+ return;
+ }
+ string ssid = "";
+ foreach (var b in serverIfon.ssid)
+ {
+ ssid += System.Convert.ToString(b, 16).ToUpper().Length < 2 ? "0" + System.Convert.ToString(b, 16).ToUpper() : System.Convert.ToString(b, 16).ToUpper();
+ }
+ System.Threading.Thread.Sleep(1000);
+ for (int i = 0; i < musicList1.Count; i++)
+ {
+ var clientMusic = musicList1[i];
+ if (clientMusic.UniqueDeviceName == serverMusic.UniqueDeviceName)
+ {
+ //杩囨护鎺変富鎾斁鍣�;
+ continue;
+ }
+ if (null == SendMethod.OpenWeb("http://" + clientMusic.IPAddress + "/httpapi.asp?command=ConnectMasterAp:ssid=" + ssid + ":ch=" + serverIfon.WifiChannel + ":auth=OPEN:encry=NONE:pwd=:chext=0:JoinGroupMaster:eth" + serverIfon.eth2 + ":wifi" + serverIfon.ra0 + ":uuid" + serverIfon.uuid))
+ {
+ if (null == SendMethod.OpenWeb("http://" + clientMusic.IPAddress + "/httpapi.asp?command=ConnectMasterAp:ssid=" + ssid + ":ch=" + serverIfon.WifiChannel + ":auth=OPEN:encry=NONE:pwd=:chext=0:JoinGroupMaster:eth" + serverIfon.eth2 + ":wifi" + serverIfon.ra0 + ":uuid" + serverIfon.uuid))
+ {
+
+ }
+ }
+ }
+ DateTime dateTime = DateTime.Now;
+ while ((DateTime.Now - dateTime).TotalMilliseconds < 10 * 1000)
+ {
+ System.Threading.Thread.Sleep(1000);
+ try
+ {
+ var result = SendMethod.OpenWeb("http://" + serverMusic.IPAddress + "/httpapi.asp?command=multiroom:getSlaveList");
+ if (result != null)
+ {
+ var tmepSlaves = Newtonsoft.Json.JsonConvert.DeserializeObject<Slaves>(result);
+ if (tmepSlaves != null && tmepSlaves.slave_list != null)
+ {
+ string str = serverMusic.Name;
+ for (int j = 0; j < A31MusicModel.A31MusicModelList.Count; j++)
+ {
+ var music = A31MusicModel.A31MusicModelList[j];
+ if (music.UniqueDeviceName == serverMusic.UniqueDeviceName)
+ {
+
+ music.ServerClientType = 1;
+ music.Slave = tmepSlaves;
+ //杩囨护鎺変富鎾斁鍣�;
+ continue;
+ }
+ var slave_Ifon = tmepSlaves.slave_list.Find((obj) => obj.uuid.Replace("uuid:", "") == music.UniqueDeviceName);
+ if (null != slave_Ifon)
+ {
+ str = str + "+" + slave_Ifon.name;
+ //宸茬粡娣诲姞鎴愬姛
+ music.ServerClientType = -1;
+ music.IsCanShow = false;
+ music.IsOnLine = false;
+ music.IPAddress = slave_Ifon.ip;
+ music.MainPlayIP = serverMusic.IPAddress;
+ }
+ }
+ serverMusic.MainPlayName = str;
+ A31MusicModel.Save();
+ break;
+ }
+ }
+ }
+ catch { }
+ }
+ }
+ catch { }
+ finally
+ {
+ Application.RunOnMainThread(() =>
+ {
+ MainPage.BasePageView.RemoveViewByTag("MusicMain");
+ var musicMain = new MusicMain();
+ MainPage.BasePageView.AddChidren(musicMain);
+ musicMain.Show();
+ MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+ });
+ }
+ });
+
+ }
+
}
+ [System.Serializable]
+ public class A31Wifi鈥� {
+ public string ssid;鈥� public string WifiChannel;鈥� public string uuid;鈥� public string eth2;鈥� public string ra0;鈥� public string upnp_uuid;
+ public string firmware;
+ public string language;
+ public string MAC;
+ public string Release;
+ public string psk;
+ public string SSIDStrategy;
+ public string netstat;
+ public string apcli0;
+鈥� }
+
+
}
--
Gitblit v1.8.0