如何在UWP应用程序中以重复模式播放歌曲

时间:2016-08-10 05:33:38

标签: c# uwp background-media-player

我创建了一个UWP应用程序,可以在后台播放某些曲目。基本上通过以下链接:https://blogs.windows.com/buildingapps/2016/01/13/the-basics-of-background-audio/。 我想设置某些歌曲的重复次数,因此如果一首歌曲重复次数为10,那么该歌曲将重复10次,然后再转到播放列表中的下一首歌曲。

在Windows Phone 8.0平台上,AudioPlayerAgent发生了以下事件,表明播放状态已更改。很容易覆盖该事件并添加自定义逻辑来重复播放歌曲。

protected override void OnPlayStateChanged(BackgroundAudioPlayer player, AudioTrack track, PlayState playState)
{
    switch (playState)
    {
        case PlayState.TrackEnded:

            // keep repeating the same track
            player.Position = new TimeSpan(0, 0, (int)0);
            // add custom logic here..    
            break;
    }
    NotifyComplete();
}

UWP平台中的等效事件是什么? 到目前为止,我已经在UWP平台上尝试了以下事件,但无济于事。

BackgroundMediaPlayer.Current.CurrentStateChanged += Current_CurrentStateChanged;
BackgroundMediaPlayer.Current.MediaEnded += Current_MediaEnded;
BackgroundMediaPlayer.Current.MediaOpened += Current_MediaOpened;

1 个答案:

答案 0 :(得分:0)

在Windows 10版本1607中,引入了一种新的单进程模型,极大地简化了启用背景音频的过程。

当您的应用从前台移动到后台时,媒体会继续播放。这意味着,即使用户已将应用最小化,返回主屏幕,或以其他方式导航离开您的应用,您的应用仍可继续播放音频。

从Windows 10版本1607开始,推荐播放媒体的最佳做法是使用MediaPlayer类而不是MediaElement

使用MediaPlayer播放媒体文件

_mediaPlayer = new MediaPlayer();
_mediaPlayer.Source = MediaSource.CreateFromUri(new Uri("ms-appx:///Assets/example_video.mkv"));
_mediaPlayer.Play();

MSDN: Play media in the background

现在,您的应用可以管理播放列表或循环设置,并使用媒体播放器实例再次调用Play方法。