0
我正在使用C#/ XAML实现背景音频Windows 8 Store应用程序,并且我设法使用带有BackgroundCapableMedia的MediaElement在后台运行音频。根据那blog post,我应该可以播放播放列表。移动到带有背景音频的下一个轨道
但是当轨道完成时,我找不到如何移动到下一个轨道。如果我使用mediaElement.MediaEnded
,则应用程序在后台时不会调用事件处理程序。
我正在使用C#/ XAML实现背景音频Windows 8 Store应用程序,并且我设法使用带有BackgroundCapableMedia的MediaElement在后台运行音频。根据那blog post,我应该可以播放播放列表。移动到带有背景音频的下一个轨道
但是当轨道完成时,我找不到如何移动到下一个轨道。如果我使用mediaElement.MediaEnded
,则应用程序在后台时不会调用事件处理程序。
基本上你必须制作自己的播放列表并自己实现逻辑。您的播放列表可以只是一个集合,您可以获取集合中的下一首曲目并播放它。从我的代码示例:
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();
});
}
也许我做错了什么,但就像我提到的,这并不适合我,因为不叫MediaEnded功能,除非应用程序在前台。 – Flavien