using System;
|
using Shared;
|
using com.hdl.on;
|
using System.Collections.Generic;
|
using System.Security;
|
|
namespace HDL_ON.UI.Music
|
{
|
public class A31PlayMusicPage : FrameLayout
|
{
|
public A31PlayMusicPage()
|
{
|
}
|
public override void RemoveFromParent()
|
{
|
base.RemoveFromParent();
|
Volume.VolumeChange = null;
|
if (timerThread != null)
|
{
|
try
|
{
|
if (timerThread.IsAlive)
|
{
|
timerThread.Abort();
|
}
|
}
|
catch { }
|
}
|
}
|
View.PlayView playView = new View.PlayView();
|
|
public void Show()
|
{
|
///1秒定时更新状态
|
timerUpdateStatus();
|
#region ---界面布局---
|
this.BackgroundColor = Color.ViewColor;
|
var topView = new TopView();
|
topView.setBtn.Visible = true;
|
this.AddChidren(topView.TopFLayoutView());
|
topView.topNameBtn.Text = A31MusicModel.Current.Name;
|
topView.clickBackBtn.MouseUpEventHandler += (sender, e) =>
|
{
|
RemoveFromParent();
|
};
|
topView.setBtn.MouseUpEventHandler += (sender, e) =>
|
{
|
A31MusicSourcePage a31MusicSourcePage = new A31MusicSourcePage();
|
MainPage.BasePageView.AddChidren(a31MusicSourcePage);
|
a31MusicSourcePage.Show();
|
MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
|
};
|
|
|
var middLayout = new FrameLayout
|
{
|
Y = topView.fLayout.Bottom,
|
Height = Application.GetRealHeight(H_W.H - H_W.T_Height),
|
};
|
this.AddChidren(middLayout);
|
///加载播放音乐界面的控件方法
|
playView.viewFrameLayout(middLayout);
|
#endregion
|
|
|
///切换播放模式点击事件;
|
playView.playOrderBtn.MouseUpEventHandler += (sender, e) =>
|
{
|
string msg = Language.StringByID(StringId.switchTo);
|
switch (A31MusicModel.Current.A31PlayStatus.loop)
|
{
|
//0列表循环,1单曲循环,2随机播放;
|
case "0":
|
A31MusicModel.Current.A31PlayStatus.loop = "1";
|
playView.playOrderBtn.UnSelectedImagePath = "MusicIcon/single.png";
|
msg += Language.StringByID(StringId.singleMode);
|
break;
|
|
case "1":
|
A31MusicModel.Current.A31PlayStatus.loop = "2";
|
playView.playOrderBtn.UnSelectedImagePath = "MusicIcon/random.png";
|
msg += Language.StringByID(StringId.randomMode);
|
break;
|
case "2":
|
A31MusicModel.Current.A31PlayStatus.loop = "0";
|
playView.playOrderBtn.UnSelectedImagePath = "MusicIcon/list.png";
|
msg += Language.StringByID(StringId.listMode);
|
break;
|
}
|
new PublicAssmebly().TipMsgAutoClose(msg, false, 1000);
|
string url = "http://" + A31MusicModel.Current.IPAddress + "/httpapi.asp?command=setPlayerCmd:" + "loopmode:" + A31MusicModel.Current.A31PlayStatus.loop;
|
SendMethod.SendCommand(url);
|
};
|
///添加喜爱点击事件;
|
playView.loveBtn.MouseUpEventHandler += (sender, e) =>
|
{
|
|
var url = A31MusicModel.Current.A31PlayStatus.TrackURL;
|
var album = A31MusicModel.Current.A31PlayStatus.Album;
|
var artist = A31MusicModel.Current.A31PlayStatus.Artist;
|
var song = A31MusicModel.Current.A31PlayStatus.Title;
|
if (A31MusicModel.Current.A31PlayStatus.Source == "RADIO-NETWORK")
|
{
|
playView.loveBtn.IsSelected = !playView.loveBtn.IsSelected;
|
if (playView.loveBtn.IsSelected)
|
{
|
if (null == A31MusicModel.Current.LoveRadioInfoList.Find((musicInfo) =>
|
{
|
return url == musicInfo.URL;
|
}))
|
{
|
A31MusicModel.Current.LoveRadioInfoList.Add(new MusicInfo { Title = song, URL = url, });
|
}
|
}
|
else
|
{
|
A31MusicModel.Current.LoveRadioInfoList.RemoveAll((musicInfo) =>
|
{
|
return url == musicInfo.URL;
|
});
|
}
|
}
|
else
|
{
|
playView.loveBtn.IsSelected = !playView.loveBtn.IsSelected;
|
if (playView.loveBtn.IsSelected)
|
{
|
if (null == A31MusicModel.Current.LoveMusicInfoList.Find((musicInfo) =>
|
{
|
return url == musicInfo.URL;
|
}))
|
{
|
A31MusicModel.Current.LoveMusicInfoList.Add(new MusicInfo { Title = song, URL = url, Artist = artist, Album = album });
|
}
|
}
|
else
|
{
|
A31MusicModel.Current.LoveMusicInfoList.RemoveAll((musicInfo) =>
|
{
|
//也要加歌手名判断
|
return musicInfo.URL == url;
|
});
|
}
|
|
}
|
A31MusicModel.Save();
|
};
|
///我的列表点击事件
|
playView.playlistBtn.MouseUpEventHandler += (sender, e) =>
|
{
|
#region 布局界面---
|
Loading loading = new Loading();
|
FrameLayout popFra = new FrameLayout()
|
{
|
BackgroundColor = Color.PopupBackgroundColor,
|
};
|
this.AddChidren(popFra);
|
|
FrameLayout dialogFra = new FrameLayout()
|
{
|
X = Application.GetRealWidth(16),
|
Y = Application.GetRealHeight(187),
|
Width = Application.GetRealWidth(344),
|
Height = Application.GetRealHeight(460),
|
BackgroundColor = Color.WhiteColor,
|
Radius = (uint)Application.GetRealHeight(12),
|
};
|
popFra.AddChidren(dialogFra);
|
dialogFra.AddChidren(loading);//dialogFra刷新图标父控件
|
|
FrameLayout topFra = new FrameLayout()
|
{
|
Width = Application.GetRealWidth(344),
|
Height = Application.GetRealHeight(50),
|
};
|
dialogFra.AddChidren(topFra);
|
Button orderIconBtn = new Button
|
{
|
X = Application.GetRealWidth(16),
|
Y = Application.GetRealHeight(11),
|
Width = Application.GetMinRealAverage(28),
|
Height = Application.GetMinRealAverage(28),
|
};
|
topFra.AddChidren(orderIconBtn);
|
Button orderTxetBtn = new Button
|
{
|
X = Application.GetRealWidth(60),
|
Y = Application.GetRealHeight(14),
|
Width = Application.GetRealWidth(120),
|
Height = Application.GetRealHeight(22),
|
TextColor = Color.TextColor,
|
TextSize = TextSize.Text16,
|
TextAlignment = TextAlignment.CenterLeft,
|
};
|
topFra.AddChidren(orderTxetBtn);
|
switch (A31MusicModel.Current.A31PlayStatus.loop)
|
{
|
//0列表循环,1单曲循环,2随机播放;
|
case "0":
|
orderIconBtn.UnSelectedImagePath = "MusicIcon/list.png";
|
orderTxetBtn.Text = Language.StringByID(StringId.listMode);
|
break;
|
|
case "1":
|
orderIconBtn.UnSelectedImagePath = "MusicIcon/single.png";
|
orderTxetBtn.Text = Language.StringByID(StringId.singleMode);
|
|
break;
|
case "2":
|
orderIconBtn.UnSelectedImagePath = "MusicIcon/random.png";
|
orderTxetBtn.Text = Language.StringByID(StringId.randomMode);
|
break;
|
}
|
Button backIextBtn = new Button
|
{
|
X = Application.GetRealWidth(288),//300
|
Y = Application.GetRealHeight(15),
|
Width = Application.GetRealWidth(28 + 12),//28
|
Height = Application.GetRealHeight(20),
|
TextID = StringId.cancelMusic,
|
TextColor = Color.MusicNoTxetColor,
|
TextSize = TextSize.Text14,
|
TextAlignment = TextAlignment.CenterLeft,
|
};
|
topFra.AddChidren(backIextBtn);
|
Button lineBtn = new Button
|
{
|
Y = topFra.Height - 1,
|
Width = Application.GetRealWidth(344),
|
Height = H_W.Line,
|
BackgroundColor = Color.LineColor,
|
};
|
topFra.AddChidren(lineBtn);
|
VerticalScrolViewLayout verticalScrolViewLayout = new VerticalScrolViewLayout
|
{
|
Y = Application.GetRealHeight(50),
|
Height = Application.GetRealHeight(410),
|
Width = Application.GetRealWidth(344),
|
};
|
dialogFra.AddChidren(verticalScrolViewLayout);
|
///移除界面
|
EventHandler<MouseEventArgs> removeFromParentView = (sen, e1) =>
|
{
|
|
if (updateSelectedMusicThread != null)
|
{
|
try
|
{
|
if (updateSelectedMusicThread.IsAlive)
|
{
|
updateSelectedMusicThread.Abort();
|
///关闭线程
|
}
|
}
|
catch { }
|
}
|
|
popFra.RemoveFromParent();
|
};
|
backIextBtn.MouseUpEventHandler += removeFromParentView;
|
popFra.MouseUpEventHandler += removeFromParentView;
|
#endregion
|
loading.Start();
|
System.Threading.Tasks.Task.Run(() =>
|
{
|
string playListName = "List";
|
string sourceName = "SourceName";
|
try
|
{
|
if (A31MusicModel.Current.A31PlayStatus.Source == "STATION-NETWORK")
|
{
|
A31MusicModel.Current.CurrentPlayMusicInfoList = new List<MusicInfo>();
|
return;
|
}
|
if (A31MusicModel.Current.A31PlayStatus.Source == "AIRPLAY")
|
{
|
A31MusicModel.Current.CurrentPlayMusicInfoList = new List<MusicInfo>();
|
return;
|
}
|
var playString = SendMethod.GetCurrentPlayList(A31MusicModel.Current);
|
A31MusicModel.Current.CurrentPlayMusicInfoList = new List<MusicInfo>();
|
var se = System.Security.SecurityElement.FromString(playString);
|
while (se.Children != null)
|
{
|
se = se.Children[0] as System.Security.SecurityElement;
|
}
|
playListName = SecurityElement.FromString(se.Text).SearchForChildByTag("ListName").Text;
|
sourceName = SecurityElement.FromString(se.Text).SearchForChildByTag("ListInfo").SearchForTextOfTag("SourceName");
|
foreach (SecurityElement track in SecurityElement.FromString(se.Text).SearchForChildByTag("Tracks").Children)
|
{
|
MusicInfo musicInfo = new MusicInfo();
|
musicInfo.URL = track.SearchForTextOfTag("URL").Replace("&", "&amp;");
|
var metadata = track.SearchForTextOfTag("Metadata");
|
musicInfo.SourceName = track.SearchForTextOfTag("Source");
|
if (string.IsNullOrEmpty(metadata))
|
{
|
continue;
|
}
|
if (A31MusicModel.IsJson(metadata))
|
{
|
var qqSong = Newtonsoft.Json.JsonConvert.DeserializeObject<SendMethod.A31QQSong>(metadata);
|
musicInfo.Album = qqSong.album;
|
musicInfo.Title = qqSong.title;
|
musicInfo.Artist = qqSong.creator;
|
}
|
else
|
{
|
metadata = metadata.Replace("<?xml version=\"1.0\" encoding=\"UTF-8\"?>", "").Replace("&", "&amp;");
|
var item = SecurityElement.FromString(metadata).SearchForChildByTag("item");
|
musicInfo.Title = item.SearchForTextOfTag("dc:title");
|
musicInfo.Artist = item.SearchForTextOfTag("upnp:artist");
|
musicInfo.Album = item.SearchForTextOfTag("upnp:album");
|
musicInfo.Duration = item.SearchForTextOfTag("res");
|
musicInfo.AlbumId = item.SearchForTextOfTag("song:albumid");
|
}
|
A31MusicModel.Current.CurrentPlayMusicInfoList.Add(musicInfo);
|
}
|
}
|
catch { }
|
finally
|
{
|
Application.RunOnMainThread(() =>
|
{
|
loading.Hide();
|
PlayListView(popFra, verticalScrolViewLayout, playListName);
|
UpdateSelectedMusic(verticalScrolViewLayout);
|
});
|
}
|
});
|
|
};
|
///音量图标点击事件
|
playView.volIconBtn.MouseUpEventHandler += (sender, e) =>
|
{
|
if (A31MusicModel.Current.ServerClientType == 1 && A31MusicModel.Current.Slave.slave_list.Count != 0)
|
{ ///主播放器
|
//new View.DialogView { }.PlayerVolumeView(A31MusicModel.Current);
|
|
var volumeView = new View.DialogView { };
|
volumeView.PlayerVolumeView(A31MusicModel.Current);
|
volumeView.UpdateVolume();
|
|
}
|
};
|
///音量进度条点击事件
|
int startVolume = 0;//之前的音量
|
//int endVolume = 0;//现在的音量
|
EventHandler<int> progressClick = (sender, e) =>
|
{
|
playView.volValueBtn.Text = playView.volSeekBar.Progress + "%";
|
if (startVolume != e)
|
{
|
startVolume = e;
|
SendMethod.ControlVolume(e, A31MusicModel.Current);
|
A31MusicModel.Current.A31PlayStatus.vol = e.ToString();
|
}
|
};
|
playView.volSeekBar.OnProgressChangedEvent += progressClick;
|
playView.volSeekBar.OnStopTrackingTouchEvent += progressClick;
|
///上一曲点击事件
|
playView.prevBtn.MouseDownEventHandler += (sender, e) =>
|
{
|
playView.prevBtn.IsSelected = true;
|
SendMethod.Previous(A31MusicModel.Current);
|
};
|
playView.prevBtn.MouseUpEventHandler += (sender, e) =>
|
{
|
playView.prevBtn.IsSelected = false;
|
};
|
///暂停/播放点击事件
|
playView.playBtn.MouseDownEventHandler += (sender, e) =>
|
{
|
if (playView.playBtn.IsSelected)
|
{
|
playView.playBtn.IsSelected = false;
|
SendMethod.Pause(A31MusicModel.Current);
|
A31MusicModel.Current.A31PlayStatus.status = "pause";
|
}
|
else
|
{
|
playView.playBtn.IsSelected = true;
|
SendMethod.Play(A31MusicModel.Current);
|
A31MusicModel.Current.A31PlayStatus.status = "play";
|
}
|
};
|
///下一曲点击事件
|
playView.nextBtn.MouseDownEventHandler += (sender, e) =>
|
{
|
playView.nextBtn.IsSelected = true;
|
SendMethod.Next(A31MusicModel.Current);
|
};
|
playView.nextBtn.MouseUpEventHandler += (sender, e) =>
|
{
|
playView.nextBtn.IsSelected = false;
|
};
|
///物理按键的点击事件
|
Volume.VolumeChange = (volume) =>
|
{
|
if (Application.DeviceType == Device.Ios && A31MusicModel.Current.A31PlayStatus.Source == "BLUETOOTH")
|
{
|
return;
|
}
|
playView.volSeekBar.Progress = volume;
|
|
if (startVolume != volume)
|
{
|
startVolume = volume;
|
SendMethod.ControlVolume(volume, A31MusicModel.Current);
|
A31MusicModel.Current.A31PlayStatus.vol = volume.ToString();
|
}
|
|
};
|
|
}
|
|
System.Threading.Thread timerThread;
|
/// <summary>
|
/// 定时更新状态
|
/// </summary>
|
void timerUpdateStatus()
|
{
|
timerThread = new System.Threading.Thread((obj) =>
|
{
|
while (true)
|
{
|
Application.RunOnMainThread(() =>
|
{
|
try
|
{
|
|
//更新总时间
|
//总共有多少秒
|
int totalSecond = int.Parse(A31MusicModel.Current.A31PlayStatus.totlen) / 1000;
|
//分钟
|
int totalMusicMinute = totalSecond / 60;
|
//秒钟
|
int totalMusicSecond = totalSecond % 60;
|
|
string totalTime = (totalMusicMinute.ToString().Length < 2 ? "0" + totalMusicMinute.ToString() : totalMusicMinute.ToString()) + ":" + (totalMusicSecond.ToString().Length < 2 ? "0" + totalMusicSecond.ToString() : totalMusicSecond.ToString());
|
playView.endTimeBtn.Text = totalTime;
|
|
//topView.topNameBtn.Text = A31MusicModel.Current.Name;
|
|
switch (A31MusicModel.Current.A31PlayStatus.loop)
|
{
|
case "0"://列表循环
|
playView.playOrderBtn.UnSelectedImagePath = "MusicIcon/list.png";
|
break;
|
case "1"://单曲顺环
|
playView.playOrderBtn.UnSelectedImagePath = "MusicIcon/single.png";
|
break;
|
case "2"://随机播放
|
playView.playOrderBtn.UnSelectedImagePath = "MusicIcon/random.png";
|
break;
|
}
|
|
|
if (A31MusicModel.Current.A31PlayStatus.Source == "RADIO-NETWORK")
|
{
|
var v = A31MusicModel.Current.LoveRadioInfoList.Find((like) =>
|
{
|
return like.URL == A31MusicModel.Current.A31PlayStatus.TrackURL;
|
});
|
if (v != null)
|
{
|
playView.loveBtn.IsSelected = true;
|
}
|
else
|
{
|
playView.loveBtn.IsSelected = false;
|
}
|
}
|
else
|
{
|
var v = A31MusicModel.Current.LoveMusicInfoList.Find((like) =>
|
{
|
return like.URL == A31MusicModel.Current.A31PlayStatus.TrackURL;
|
});
|
if (v != null)
|
{
|
playView.loveBtn.IsSelected = true;
|
}
|
else
|
{
|
playView.loveBtn.IsSelected = false;
|
}
|
}
|
|
|
//if (A31MusicModel.Current.A31PlayStatus.IsMute)
|
//{
|
// btnMute.IsSelected = true;//静音图标
|
// playView.volSeekBar.Progress = 0;
|
//}
|
//else
|
//{
|
// btnMute.IsSelected = false;//静音图标
|
// if (1000 < (DateTime.Now - A31MusicModel.ProgressDateTime).TotalMilliseconds)
|
// {
|
// //声音进度条;
|
// playView.volSeekBar.Progress = int.Parse(A31MusicModel.Current.A31PlayStatus.vol);
|
// //显示当前音量值;
|
// playView.volValueBtn.Text = A31MusicModel.Current.A31PlayStatus.vol + "%";
|
// }
|
//}
|
|
if (1000 < (DateTime.Now - A31MusicModel.ProgressDateTime).TotalMilliseconds)
|
{
|
//音量进度条;
|
playView.volSeekBar.Progress = int.Parse(A31MusicModel.Current.A31PlayStatus.vol);
|
//显示当前音量值;
|
playView.volValueBtn.Text = A31MusicModel.Current.A31PlayStatus.vol + "%";
|
}
|
//更新播放器音量给系统音量
|
Volume.MusicVolume = playView.volSeekBar.Progress;
|
//当前播放音乐时间
|
int playSecond = int.Parse(A31MusicModel.Current.A31PlayStatus.curpos) / 1000 + (int)(DateTime.Now - A31MusicModel.Current.LastDateTime).TotalSeconds;
|
|
int playMusicMinute = playSecond / 60;
|
//秒钟
|
int playMusicSecond = playSecond % 60;
|
|
string playTime = (playMusicMinute.ToString().Length < 2 ? "0" + playMusicMinute.ToString() : playMusicMinute.ToString()) + ":" + (playMusicSecond.ToString().Length < 2 ? "0" + playMusicSecond.ToString() : playMusicSecond.ToString());
|
|
if (A31MusicModel.Current.A31PlayStatus.status == "play")
|
{
|
playView.playBtn.IsSelected = true;
|
//如果在播放,时间就不断变化
|
playView.startTimeBtn.Text = playTime;
|
if (totalSecond == 0)
|
{
|
//歌曲进度条
|
//playView.volSeekBar.Progress = 0;
|
}
|
else
|
{
|
//歌曲进度条
|
//playView.volSeekBar.Progress = (int)(playSecond * 100.0 / totalSecond);//+1
|
}
|
|
}
|
else
|
{
|
playView.playBtn.IsSelected = false;
|
//停止播放
|
playView.startTimeBtn.Text = "00:00";
|
}
|
playView.songNameTextView.Text = (A31MusicModel.Current.A31PlayStatus.Title == null ? "Unkown" : A31MusicModel.Current.A31PlayStatus.Title);
|
playView.singerBtn.Text = (A31MusicModel.Current.A31PlayStatus.Artist == null ? "Unkown" : A31MusicModel.Current.A31PlayStatus.Artist.Trim());
|
//更新源的界面
|
showSourcePage();
|
}
|
catch (Exception e)
|
{
|
var ee = e.Message;
|
}
|
});
|
System.Threading.Thread.Sleep(1000 * 1);
|
}
|
})
|
{ IsBackground = true };
|
timerThread.Start();
|
}
|
/// <summary>
|
/// 更新不同音乐源界面图标状态
|
/// </summary>
|
void showSourcePage()
|
{
|
playView.loveBtn.Alpha = 1;
|
playView.loveBtn.Enable = true;
|
|
playView.playlistBtn.Alpha = 1;
|
playView.playlistBtn.Enable = true;
|
|
playView.prevBtn.Alpha = 1;
|
playView.prevBtn.Enable = true;
|
|
playView.nextBtn.Alpha = 1;
|
playView.nextBtn.Enable = true;
|
|
playView.playOrderBtn.Alpha = 1;
|
playView.playOrderBtn.Enable = true;
|
|
//btnPlay.Alpha = 1;
|
//btnPlay.Enable = true;
|
|
playView.volSeekBar.IsClickable = true;
|
|
switch (A31MusicModel.Current.A31PlayStatus.Source)
|
{
|
|
case "QPLAY"://QQ音乐
|
//currentsource.UnSelectedImagePath = "MusicIcon/qqmusic1.png";
|
playView.loveBtn.Alpha = 0.5f;
|
playView.loveBtn.Enable = false;
|
break;
|
case "AIRPLAY"://酷狗音乐
|
//currentsource.UnSelectedImagePath = "MusicIcon/kumusic.png";
|
playView.loveBtn.Alpha = 0.5f;
|
playView.loveBtn.Enable = false;
|
playView.volSeekBar.IsClickable = false;
|
break;
|
case "SONGLIST-NETWORK"://本地音乐
|
//currentsource.UnSelectedImagePath = "MusicIcon/musicMusic1.png";
|
break;
|
case "SONGLIST-LOCAL"://USB
|
//currentsource.UnSelectedImagePath = "MusicIcon/USB1.png";
|
break;
|
case "RADIO-NETWORK"://在线电台
|
//currentsource.UnSelectedImagePath = "MusicIcon/local1.png";
|
playView.playlistBtn.Alpha = 1;
|
playView.playlistBtn.Enable = true;
|
|
playView.prevBtn.Alpha = 0.5f;
|
playView.prevBtn.Enable = false;
|
|
playView.nextBtn.Alpha = 0.5f;
|
playView.nextBtn.Enable = false;
|
|
playView.playOrderBtn.Alpha = 0.5f;
|
playView.playOrderBtn.Enable = false;
|
break;
|
|
case "STATION-NETWORK"://Pandora电台
|
playView.volSeekBar.IsClickable = false;
|
//currentsource.UnSelectedImagePath = "MusicIcon/pandora1.png";
|
playView.loveBtn.Alpha = 0.5f;
|
playView.loveBtn.Enable = false;
|
|
playView.prevBtn.Alpha = 0.5f;
|
playView.prevBtn.Enable = false;
|
|
playView.playOrderBtn.Alpha = 0.5f;
|
playView.playOrderBtn.Enable = false;
|
break;
|
|
case "BLUETOOTH"://蓝牙
|
// currentsource.UnSelectedImagePath = "MusicIcon/bluetooth1.png";
|
playView.loveBtn.Alpha = 0.5f;
|
playView.loveBtn.Enable = false;
|
|
playView.playlistBtn.Alpha = 0.5f;
|
playView.playlistBtn.Enable = false;
|
|
playView.prevBtn.Alpha = 0.5f;
|
playView.prevBtn.Enable = false;
|
|
playView.nextBtn.Alpha = 0.5f;
|
playView.nextBtn.Enable = false;
|
|
playView.playOrderBtn.Alpha = 0.5f;
|
playView.playOrderBtn.Enable = false;
|
|
//btnPlay.Alpha = 0.5f;
|
//btnPlay.Enable = false;
|
break;
|
|
|
case "LINE-IN"://线路输入
|
// currentsource.UnSelectedImagePath = "MusicIcon/muiscline1.png";
|
playView.loveBtn.Alpha = 0.5f;
|
playView.loveBtn.Enable = false;
|
|
playView.playlistBtn.Alpha = 0.5f;
|
playView.playlistBtn.Enable = false;
|
|
playView.prevBtn.Alpha = 0.5f;
|
playView.prevBtn.Enable = false;
|
|
playView.nextBtn.Alpha = 0.5f;
|
playView.nextBtn.Enable = false;
|
|
playView.playOrderBtn.Alpha = 0.5f;
|
playView.playOrderBtn.Enable = false;
|
|
//btnPlay.Alpha = 0.5f;
|
//btnPlay.Enable = false;
|
break;
|
|
default:
|
//currentsource.UnSelectedImagePath = "MusicIcon/dlna.png";
|
playView.volSeekBar.IsClickable = false;
|
playView.loveBtn.Alpha = 0.5f;
|
playView.loveBtn.Enable = false;
|
|
playView.playlistBtn.Alpha = 0.5f;
|
playView.playlistBtn.Enable = false;
|
|
playView.prevBtn.Alpha = 0.5f;
|
playView.prevBtn.Enable = false;
|
|
playView.nextBtn.Alpha = 0.5f;
|
playView.nextBtn.Enable = false;
|
|
playView.playOrderBtn.Alpha = 0.5f;
|
playView.playOrderBtn.Enable = false;
|
break;
|
}
|
//if (A31MusicModel.Current.A31PlayStatus.playSource == "UPnPServer")
|
//{
|
// currentsource.UnSelectedImagePath = "MusicIcon/dlna.png";
|
//}
|
//else if (A31MusicModel.Current.A31PlayStatus.playSource == "Tidal")
|
//{
|
// currentsource.UnSelectedImagePath = "MusicIcon/Tidal1.png";
|
//}
|
}
|
/// <summary>
|
/// 显示当前播放音乐View
|
/// </summary>
|
/// <param name="verticalScrolViewLayout"></param>
|
void PlayListView(FrameLayout frameLayout, VerticalScrolViewLayout verticalScrolViewLayout, string playListName)
|
{
|
verticalScrolViewLayout.RemoveAll();
|
int number = 0;
|
for (int i = 0; i < A31MusicModel.Current.CurrentPlayMusicInfoList.Count; i++)
|
{
|
number++;
|
var songs = A31MusicModel.Current.CurrentPlayMusicInfoList[i];
|
if (string.IsNullOrEmpty(songs.Title))
|
{
|
//防止歌曲名字为空抛异常
|
songs.Title = " ";
|
}
|
if (string.IsNullOrEmpty(songs.Artist))
|
{
|
//防止歌手名字为空抛异常
|
songs.Artist = " ";
|
}
|
FrameLayout musicViewFl = new FrameLayout
|
{
|
Width = Application.GetRealWidth(375),
|
Height = Application.GetRealHeight(44),
|
};
|
verticalScrolViewLayout.AddChidren(musicViewFl);
|
//列表当前播放音乐图标
|
Button playIconBtn = new Button
|
{
|
X = Application.GetRealWidth(16),
|
Y = Application.GetRealHeight(10),
|
Width = Application.GetMinRealAverage(24),
|
Height = Application.GetMinRealAverage(24),
|
UnSelectedImagePath = "MusicIcon/playStatus.png",
|
Visible = false,
|
Name = "playStatus",
|
Tag = songs.URL,
|
};
|
musicViewFl.AddChidren(playIconBtn);
|
//歌曲控件
|
Button songBtn = new Button
|
{
|
X = Application.GetRealWidth(16),
|
Y = Application.GetRealHeight(11),
|
Width = Application.GetRealWidth(100),
|
Height = Application.GetRealHeight(22),
|
TextColor = Color.MusicTxet14Color,
|
TextSize = TextSize.Text16,
|
TextAlignment = TextAlignment.CenterLeft,
|
Name = "song",
|
Tag = songs.URL,
|
Text = songs.Title.Trim()
|
};
|
musicViewFl.AddChidren(songBtn);
|
var wText = songBtn.GetTextWidth();//获取文本宽度
|
///(歌曲+歌手)宽度最大值时280
|
if (wText > 280)
|
{
|
|
songBtn.Width = Application.GetRealWidth(280);
|
}
|
else
|
{
|
songBtn.Width = wText + 5;
|
}
|
//歌手控件
|
Button singerBtn = new Button
|
{
|
X = songBtn.Right,
|
Y = Application.GetRealHeight(11),
|
Width = Application.GetRealWidth(280 - songBtn.Width),
|
Height = Application.GetRealHeight(22),
|
TextColor = Color.MusicNoTxetColor,
|
TextSize = TextSize.Text12,
|
TextAlignment = TextAlignment.CenterLeft,
|
//Text =("-" +songs.Artist).Trim(),
|
Name = "singer",
|
Tag = songs.URL,
|
Text = "-" + songs.Artist.Trim()
|
};
|
musicViewFl.AddChidren(singerBtn);
|
if (wText > 280)
|
{
|
///歌名长度小于250才可以显示歌手出来
|
singerBtn.Width = Application.GetRealWidth(0);
|
}
|
|
//点击控件
|
Button clickBtn = new Button
|
{
|
Width = Application.GetRealWidth(280),
|
Height = Application.GetRealHeight(44),
|
Tag = number,//标记播放哪一首歌曲
|
};
|
musicViewFl.AddChidren(clickBtn);
|
///点击播放事件
|
clickBtn.MouseUpEventHandler += (sender, e) =>
|
{
|
if (updateSelectedMusicThread != null)
|
{
|
try
|
{
|
if (updateSelectedMusicThread.IsAlive)
|
{
|
updateSelectedMusicThread.Abort();
|
///关闭线程
|
}
|
}
|
catch { }
|
}
|
System.Threading.Tasks.Task.Run(() =>
|
{
|
System.Threading.Thread.Sleep(50);
|
Application.RunOnMainThread(() =>
|
{
|
//移除界面
|
frameLayout.RemoveFromParent();
|
A31MusicModel.Current.A31PlayStatus.Title = songBtn.Text;
|
System.Threading.Tasks.Task.Run(() =>
|
{
|
SendMethod.ListMusicPlay(playListName, clickBtn.Tag, A31MusicModel.Current);
|
});
|
});
|
});
|
|
};
|
|
}
|
}
|
/// <summary>
|
/// 定时更新当前播放音乐
|
/// </summary>
|
System.Threading.Thread updateSelectedMusicThread;
|
void UpdateSelectedMusic(VerticalScrolViewLayout middViewLayout)
|
{
|
updateSelectedMusicThread = new System.Threading.Thread(() =>
|
{
|
while (this.Parent != null)
|
{
|
System.Threading.Thread.Sleep(1000);
|
Application.RunOnMainThread(() =>
|
{
|
try
|
{
|
for (int i = 0; i < middViewLayout.ChildrenCount; i++)
|
{
|
FrameLayout view = (FrameLayout)middViewLayout.GetChildren(i);
|
var volIconBtn = (Button)view.GetChildren(0);//直接FrameLayout父控件找到该控件Button
|
var songNameBtn = (Button)view.GetChildren(1);//直接FrameLayout父控件找到该控件Button
|
var artistNameBtn = (Button)view.GetChildren(2);//直接FrameLayout父控件找到该控件Button
|
if (A31MusicModel.Current.A31PlayStatus.TrackURL == songNameBtn.Tag.ToString())
|
{
|
volIconBtn.Visible = true;
|
songNameBtn.TextColor = Color.SelectedColor;
|
songNameBtn.X = Application.GetRealWidth(48);
|
artistNameBtn.X = songNameBtn.Right;
|
artistNameBtn.TextColor = Color.SelectedColor;
|
}
|
else
|
{
|
volIconBtn.Visible = false;
|
songNameBtn.TextColor = Color.MusicTxet14Color;
|
songNameBtn.X = Application.GetRealWidth(16);
|
artistNameBtn.X = songNameBtn.Right;
|
artistNameBtn.TextColor = Color.MusicNoTxetColor;
|
}
|
}
|
}
|
catch { }
|
});
|
}
|
})
|
{ IsBackground = true };
|
updateSelectedMusicThread.Start();
|
}
|
}
|
}
|