медиаплеер в Windows Phone 7, отображающий следующую песню - PullRequest
0 голосов
/ 02 августа 2011

Я хочу сделать что-то похожее на медиаплеер в Windows Phone 7, где отображаются следующие несколько песен. Какой подход я бы выбрал для достижения этой цели?

Пример: предыдущая песня предыдущая песня ТЕКУЩАЯ ПЕСНА Следующая песня следующая песня

мой код сейчас такой:

        void MainPage_Loaded(object sender, RoutedEventArgs e)         
    {         
        List<string> songlist = new List<string>();         
        MediaLibrary library = new MediaLibrary();         
        mySongCollection = library.Songs;         
        MediaPlayer.ActiveSongChanged += new EventHandler<EventArgs>(MediaPlayer_ActiveSongChanged);         
        MediaPlayer.MediaStateChanged += new EventHandler<EventArgs>(MediaPlayer_MediaStateChanged);         

        UpdateCurrentSongInformation();         
    }         

    void UpdateCurrentSongInformation()         
    {         
        try         
        {
            MediaLibrary lb = new MediaLibrary();
            int i = MediaPlayer.Queue.ActiveSongIndex;

           textBlock1.Text= lb.Songs.ToString();

            txtAlbumName.Text = MediaPlayer.Queue.ActiveSong.Album.Name;         
            txtArtistName.Text = MediaPlayer.Queue.ActiveSong.Artist.Name;         
            txtSongName.Text = MediaPlayer.Queue.ActiveSong.Name;
            progressBar1.Maximum = MediaPlayer.Queue.ActiveSong.Duration.Minutes*60+MediaPlayer.Queue.ActiveSong.Duration.Seconds;
            double max = MediaPlayer.Queue.ActiveSong.Duration.Milliseconds;


            BitmapImage bmp = new BitmapImage();         
            bmp.SetSource(MediaPlayer.Queue.ActiveSong.Album.GetAlbumArt());

            imgAlbumCover.Source = bmp;         
        }         
        catch         
        {         
            imgAlbumCover.Source = null;         
        }         
    }

Как предлагает Деннис, я пишу это так:

            MediaLibrary lb = new MediaLibrary();
            int i = MediaPlayer.Queue.ActiveSongIndex;
            NextSong.Text = lb.Songs[i+1].Name;

1 Ответ

2 голосов
/ 02 августа 2011

Поскольку у вас есть MediaPlayer.Queue.ActiveSongIndex, вы также можете получить доступ к существующим элементам в очереди по их индексу через MediaPlayer.Queue[n], где n - индекс песни. Вы получите экземпляр Song с теми же метаданными. Пока у вас есть текущий индекс, вы можете уменьшить его на единицу, чтобы проверить предыдущую песню, и увеличить на единицу, чтобы проверить следующую песню.

...