首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >(UWP)如何在Groove中激活"Taskbar Miniplayer“

(UWP)如何在Groove中激活"Taskbar Miniplayer“
EN

Stack Overflow用户
提问于 2016-06-13 17:33:33
回答 2查看 561关注 0票数 4

我使用我的应用程序的BackgroundMediaPlayer在后台播放音频。现在我看到了这些按钮:

如何激活它们?

EN

回答 2

Stack Overflow用户

发布于 2016-06-13 20:30:19

为了使任务栏中的媒体控件正常工作,您需要从前台应用程序和后台任务加载和配置SystemMediaTransportControls。

在前台应用程序中,您应该有以下代码:

代码语言:javascript
复制
var smtc = SystemMediaTransportControls.GetForCurrentView();
smtc.ButtonPressed += smtc_ButtonPressed;
smtc.PropertyChanged += smtc_PropertyChanged;
smtc.IsEnabled = true;
smtc.IsPauseEnabled = true;
smtc.IsPlayEnabled = true;
smtc.IsNextEnabled = true;
smtc.IsPreviousEnabled = true;

在后台任务中,您应该有:

代码语言:javascript
复制
smtc = BackgroundMediaPlayer.Current.SystemMediaTransportControls;
smtc.ButtonPressed += smtc_ButtonPressed;
smtc.PropertyChanged += smtc_PropertyChanged;
smtc.IsEnabled = true;
smtc.IsPauseEnabled = true;
smtc.IsPlayEnabled = true;
smtc.IsNextEnabled = true;
smtc.IsPreviousEnabled = true;

请注意,获取控件实例的API是不同的:

前台app为SystemMediaTransportControls.GetForCurrentView(),后台任务为BackgroundMediaPlayer.Current.SystemMediaTransportControls

你必须支持两个(前景+背景)中的按钮按下事件

票数 2
EN

Stack Overflow用户

发布于 2016-06-13 20:00:36

这是System Media Transport Controls,您应该添加代码来处理click事件。

以下是官方示例:

代码语言:javascript
复制
public MainPage()
{
this.InitializeComponent();

// Hook up app to system transport controls.
systemMediaControls = SystemMediaTransportControls.GetForCurrentView();
systemMediaControls.ButtonPressed += SystemControls_ButtonPressed;

// Register to handle the following system transpot control buttons.
systemMediaControls.IsPlayEnabled = true;
systemMediaControls.IsPauseEnabled = true;
}

async void SystemControls_ButtonPressed(SystemMediaTransportControls sender,
SystemMediaTransportControlsButtonPressedEventArgs args)
{
switch (args.Button)
  {
    case SystemMediaTransportControlsButton.Play:
        await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
        {
            mediaElement.Play();
        });
        break;
    case SystemMediaTransportControlsButton.Pause:
        await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
        {
            mediaElement.Pause();
        });
        break;
    default:
        break;
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37786261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档