private async void BackgroundMediaPlayer_MediaEnded(MediaPlayer sender, object args)
{
var currentPlaylist = (await Dbconnection.QueryAsync<CurrentPlaylist>("SELECT * FROM CurrentPlaylist WHERE CurrentSong = 1")).FirstOrDefault<CurrentPlaylist>();
List<string> events = new List<string>();
if (currentPlaylist != null)
{
if (!option_single && !option_repeat)
{
var nextPlaylist = (await Dbconnection.QueryAsync<CurrentPlaylist>("SELECT * FROM CurrentPlaylist WHERE PositionId = " + currentPlaylist.PositionId + 1)).FirstOrDefault<CurrentPlaylist>();
if(nextPlaylist != null)
{
Play(nextPlaylist.Uri, nextPlaylist.IsUri);
currentPlaylist.CurrentSong = false;
nextPlaylist.CurrentSong = true;
await Dbconnection.UpdateAsync(currentPlaylist);
await Dbconnection.UpdateAsync(nextPlaylist);
}
else
{
Stop();
}
}
else if (option_repeat)
{
Play(currentPlaylist.Uri, currentPlaylist.IsUri);
}
else
{
Stop();
}
events.Add("player");
if (option_consume && !option_repeat)
{
await Dbconnection.QueryAsync<CurrentPlaylist>("UPDATE CurrentPlaylist SET PositionId = PositionId - 1 WHERE PositionId > " + currentPlaylist.PositionId);
await Dbconnection.DeleteAsync(currentPlaylist);
events.Add("playlist");
}
if (OnIdleEvent != null) OnIdleEvent(this, new IdleEventArgs(events));
}
}
#endif