如何在C#UWP应用程序中使用系统媒体传输控件叠加层?

时间:2019-06-06 05:27:34

标签: c# xaml uwp media

我正在尝试使用SMTC叠加层,该叠加层在Windows弹出音量滑块旁边的左上角显示当前音乐信息。我在Microsoft网站上尝试了这些示例,但仍然无法设置SMTC弹出窗口。

已经在其网站上尝试了Microsoft的示例进行文档记录。 关注了youtube视频,该视频解释了相关主题,但无效。 我几乎是C#的初学者,因此对类和方法来说还很新。

using System;
using Windows.Media;
using Windows.Media.Core;
using Windows.Media.Playback;
using Windows.Storage.Streams;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;

namespace systemmedoa
{
    public sealed partial class MainPage : Page
    {
        private MediaPlayer _mediaPlayer;
        private SystemMediaTransportControls _systemMediaTransportControls;

        public MainPage()
        {
            this.InitializeComponent();

            _mediaPlayer = new MediaPlayer();
            _mediaPlayer.Source = MediaSource.CreateFromUri(new Uri("ms-appx:///Assets/song.mp3"));
            _systemMediaTransportControls = MediaPlaybackItem.Get
            _mediaPlayer.CommandManager.IsEnabled = false;
            // Get the updater.
            SystemMediaTransportControlsDisplayUpdater updater = _systemMediaTransportControls.DisplayUpdater;
            _systemMediaTransportControls.IsEnabled = true;
            // Music metadata.
            updater.Type = Windows.Media.MediaPlaybackType.Music;
            updater.MusicProperties.Artist = "artist";
            updater.MusicProperties.AlbumArtist = "album artist";
            updater.MusicProperties.Title = "song title";

            _systemMediaTransportControls.IsPlayEnabled = true;
            _systemMediaTransportControls.IsPauseEnabled = true;
            _systemMediaTransportControls.IsPreviousEnabled = true;
            _systemMediaTransportControls.IsRewindEnabled = true;



            // Set the album art thumbnail.
            // RandomAccessStreamReference is defined in Windows.Storage.Streams
            updater.Thumbnail =
               RandomAccessStreamReference.CreateFromUri(new Uri("ms-appx:///Assets/albumart.png"));

            // Update the system media transport controls.
            updater.Update();
            _systemMediaTransportControls.DisplayUpdater.Update();
            _mediaPlayer.Play();
            _systemMediaTransportControls.PlaybackStatus = MediaPlaybackStatus.Playing;
        }   
    }
}

与正常情况一样,当我使用音量键时,音频会在后台播放,但不会在Windows音量滑块弹出窗口中显示音乐信息,有点像Spotify的“使用媒体键时显示桌面叠加层”。

1 个答案:

答案 0 :(得分:0)

您的帖子中遗漏了很多东西,因此我认为您首先需要了解以下两篇文章:

  1. Integrate with the System Media Transport Controls
  2. Manual control of the System Media Transport Controls

因此,让我们检查您的代码,有一些基本问题:

  • 您只想与SMTC集成还是自定义自己的SMTC?如果您想自定义SMTC,为什么在您的代码中看不到以下内容?

    CommandManager.IsEnabled = false;
    
  • 此处的更新程序将更新元数据,但它会显示在您锁定屏幕上的位置。它实际上没有做您想要的事情(将信息放在音量滑块附近)

仅借助默认SMTC进行自定义的一种可能方法是:

     <StackPanel>
        <Button Click="Button_Click" Content="test"/>
        <Grid>
            <MediaPlayerElement x:Name="mediaplayerelement" 
    AreTransportControlsEnabled="True" />
            <TextBlock Text="artist" Width="50" Height="30" HorizontalAlignment="Left" Margin="62,48,0,0"/>
        </Grid>
     </StackPanel>