Example #1
0
 private async void SkipExecuted()
 {
     try
     {
         await CurrentItem.Skip();
     }
     catch (Exception)
     {
     }
     CurrentItem = null;
 }
Example #2
0
        private async void StopExecuted()
        {
            await CurrentItem.Stop();

            CurrentItem = null;
        }
Example #3
0
        private async Task GetCurrentPlayingItem(CancellationToken delayCancel)
        {
            var activePlayers = await _appContext.XBMC.Player.GetActivePlayers();

            if (activePlayers.Count == 0)
            {
                bool anyUpnp = false;
                try
                {
                    foreach (var renderer in _appContext.Upnp.AvailableRenderDevices)
                    {
                        var curPlayback = await renderer.AVTransport.GetCurrentPlaybackItem();

                        Uri curUri;
                        if (Uri.TryCreate(curPlayback.PosTrackuri, UriKind.Absolute, out curUri))
                        {
                            if (curPlayback.TranspState != "STOPPED")
                            {
                                if (await _appContext.Upnp.IsXbmcHost(curUri))
                                {
                                    anyUpnp   = true;
                                    IsPlaying = true;
                                    if (CurrentItem == null || CurrentItem.Id != curPlayback.PosTrackuri)
                                    {
                                        CurrentItem = CurrentItemFactory(curPlayback);
                                        break;
                                    }
                                }
                            }
                        }
                    }
                }
                catch (Exception)
                {
                    if (Debugger.IsAttached)
                    {
                        throw;
                    }
                }
                if (!anyUpnp)
                {
                    IsPlaying   = false;
                    CurrentItem = null;
                }
                await Task.Delay(TimeSpan.FromSeconds(10), delayCancel);
            }
            else
            {
                var activePlayer = activePlayers[0];
                //switch (activePlayer.type)
                //{
                //    case Type.audio:
                //        break;
                //    case Type.video:
                //        break;
                //    case Type.picture:
                //        break;
                //}

                IsPlaying = true;
                var getCurrentItemResponse =
                    await _appContext.XBMC.Player.GetItem(activePlayer.playerid);

                if (CurrentItem == null || CurrentItem.Id != getCurrentItemResponse.item.id.ToString())
                {
                    getCurrentItemResponse = await _appContext.XBMC.Player.GetItem(activePlayer.playerid, All.AllFields());

                    var currentPlayingVideo = getCurrentItemResponse.item;
                    CurrentItem = CurrentItemFactory(currentPlayingVideo, activePlayer.playerid);
                    await GetPlaylist(activePlayer.playerid);
                }
            }
            if (CurrentItem != null)
            {
                await CurrentItem.Refresh();

                await Task.Delay(OneSecond);
            }
            if (CurrentItem != null)
            {
                CurrentItem.RefreshTime();
                await Task.Delay(OneSecond);
            }
        }