Exemplo n.º 1
0
 public TrackProtocolItem(ISource source = null, BaseSoundByteItem track = null, IEnumerable <BaseSoundByteItem> playlist = null, string playlistToken = null, TimeSpan?trackPosition = null, bool isShuffled = false)
 {
     Track         = track;
     Playlist      = playlist;
     PlaylistToken = playlistToken;
     Source        = source;
     TrackPosition = trackPosition;
     IsShuffled    = isShuffled;
 }
Exemplo n.º 2
0
        private async void OnSearchTrackClickCommand(BaseSoundByteItem item)
        {
            // Create the related track collection
            var relatedTrackCollection = new SoundByteCollection <RelatedTrackSource>();

            relatedTrackCollection.Source.Service = item.Track.ServiceType;
            relatedTrackCollection.Source.TrackId = item.Track.TrackId;

            // Add this track as an initial track
            relatedTrackCollection.Add(item);

            // Play the tracks
            await BaseViewModel.PlayAllTracksAsync(relatedTrackCollection, item.Track);
        }
Exemplo n.º 3
0
        public async void RemoteSystemItemClick(object sender, ItemClickEventArgs e)
        {
            try
            {
                LoadingPane.Visibility = Windows.UI.Xaml.Visibility.Visible;
                var system = (RemoteSystem)e.ClickedItem;

                if (SimpleIoc.Default.GetInstance <IPlaybackService>().GetCurrentTrack() != null)
                {
                    var track    = new BaseSoundByteItem(SimpleIoc.Default.GetInstance <IPlaybackService>().GetCurrentTrack());
                    var playlist = SimpleIoc.Default.GetInstance <IPlaybackService>().GetMediaPlaybackList().Items.Select(x => new BaseSoundByteItem(x.Source.AsBaseTrack()));
                    var token    = SimpleIoc.Default.GetInstance <IPlaybackService>().GetPlaylistToken();
                    var source   = SimpleIoc.Default.GetInstance <IPlaybackService>().GetPlaylistSource();

                    var status = await RemoteLauncher.LaunchUriAsync(new RemoteSystemConnectionRequest(system),
                                                                     new Uri(ProtocolHelper.EncodeTrackProtocolItem(new ProtocolHelper.TrackProtocolItem(source, track, playlist, token, SimpleIoc.Default.GetInstance <IPlaybackService>().GetTrackDuration()), true)));

                    if (status == RemoteLaunchUriStatus.Success)
                    {
                        Hide();
                        LoadingPane.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
                    }
                    else
                    {
                        Hide();
                        LoadingPane.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
                        await NavigationService.Current.CallMessageDialogAsync("Failed with status: " + status, "Remote System Error");
                    }
                }
                else
                {
                    Hide();
                    LoadingPane.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
                    await NavigationService.Current.CallMessageDialogAsync("A track must be playing", "Remote System Error");
                }
            }
            finally
            {
                LoadingPane.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
            }
        }
Exemplo n.º 4
0
        private async Task AppSuspendingAsync(object sender, SuspendingEventArgs e)
        {
            var def = e.SuspendingOperation.GetDeferral();

            try
            {
                // Clear live tile
                var updater = TileUpdateManager.CreateTileUpdaterForApplication();
                updater.Clear();

                var playbackService = SimpleIoc.Default.GetInstance <IPlaybackService>();
                if (playbackService != null)
                {
                    // Save current position
                    var currentPosition = playbackService.GetMediaPlayer()?.PlaybackSession?.Position;
                    await RoamingService.StopActivityAsync(currentPosition);

                    // Update the resume files
                    var roamingFolder = ApplicationData.Current.RoamingFolder;

                    var track    = new BaseSoundByteItem(playbackService.GetCurrentTrack());
                    var playlist = playbackService.GetMediaPlaybackList().Items.Select(x => new BaseSoundByteItem(x.Source.AsBaseTrack()));
                    var token    = playbackService.GetPlaylistToken();
                    var source   = playbackService.GetPlaylistSource();

                    var playbackFile = await roamingFolder.CreateFileAsync("currentPlayback.txt", CreationCollisionOption.OpenIfExists);

                    await FileIO.WriteTextAsync(playbackFile,
                                                ProtocolHelper.EncodeTrackProtocolItem(new ProtocolHelper.TrackProtocolItem(source, track, playlist, token, SimpleIoc.Default.GetInstance <IPlaybackService>().GetTrackPosition(), SimpleIoc.Default.GetInstance <IPlaybackService>().IsPlaylistShuffled()), false) + "\n" + SettingsService.Instance.SessionId);
                }
            }
            catch (Exception ex)
            {
                SimpleIoc.Default.GetInstance <ITelemetryService>().TrackException(ex);
            }
            finally
            {
                def.Complete();
            }
        }