private async void SkipExecuted() { try { await CurrentItem.Skip(); } catch (Exception) { } CurrentItem = null; }
private async void StopExecuted() { await CurrentItem.Stop(); CurrentItem = null; }
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); } }