使用背景音频移至下一首曲目

时间:2012-11-29 14:15:55

标签: windows-8 windows-runtime windows-store-apps background-audio

我正在使用C#/ XAML实现后台音频Windows 8商店应用程序,并设法使用带有BackgroundCapableMedia的MediaElement在后台运行音频。根据那个blog post,我应该能够播放播放列表。

然而,当曲目结束时,我找不到如何移动到下一曲目。如果我使用mediaElement.MediaEnded,则当应用程序在后台时不会调用事件处理程序。

1 个答案:

答案 0 :(得分:0)

基本上你必须制作自己的播放列表并自己实现逻辑。您的播放列表可以只是一个集合,您可以在集合中获得下一首曲目并进行播放。我的代码中的一个例子:

internal ObservableCollection<StoryViewModel> Playlist { get; set; }

void me_MediaEnded(object sender, Windows.UI.Xaml.RoutedEventArgs e)
{
    Debug.WriteLine("me_MediaEnded");

    // Zero or one tracks only, so just end...
    if (Playlist.Count <= 1)
    {
        return;
    }
    else
    {
        // We have more tracks we need to play
        Playlist.RemoveAt(0);
        PlayPlaylist();
    }
}

internal void PlayPlaylist()
{
    if (Playlist.Count == 0)
        return;

    // Set the MediaControls metadata
    MediaControl.ArtistName = _svm.ProgramTitle ?? "NPR";
    MediaControl.TrackName = _svm.Title;

    // This centralized dispatcher object is updated by each page to ensure it is current
    _dispatcher.RunAsync(
        CoreDispatcherPriority.Normal, () =>
        {
            // Set the MediaElement to the audio and play
            Me.Source = _svm.Mp3Uri;
            Me.Play();
        });
}